[Python] 7. 객체지향 프로그래밍

 

파이썬에서 객체지향 프로그래밍(OOP)은 데이터와 기능을 객체라는 단위로 묶어 구조화하는 프로그래밍 패러다임입니다. OOP의 주요 개념에는 클래스, 객체, 상속, 다형성, 캡슐화 등이 있습니다. 


1. 클래스와 객체

클래스는 객체를 생성하기 위한 청사진으로, 객체는 클래스의 인스턴스입니다.

class Person:
     def __init__(self, name, age):
         self.name = name # 인스턴스 변수
         self.age = age

     def bark(self): # 메서드
          return f"{self.name} says Human!"
# 객체 생성
my_person = Person("James", 27)

# 객체 사용
print(my_person.bark()) # result: James says Human!;

2. 상속

상속은 기존 클래스의 속성과 메서드를 새로운 클래스에서 재사용하는 방법입니다. 이를 통해서 코드의 재사용성을 높일 수 있습니다.

class Animal:
      def speak(self):
           return "Animal speaks"
class Cat(Animal): # Animal 클래스를 상속
    def speak(self):
         return "Cat says Meow"
class Dog(Animal): # Animal 클래스를 상속
    def speak(self):
        return "Dog says Woof"

# 객체 생성
my_cat = Cat()
my_dog = Dog()

# 메서드 호출
print(my_cat.speak()) # result: Cats say Meow
print(my_dog.speak()) # result: Dog says Woof

3. 다형성

다형성은 같은 이름의 메서드가 서로 다른 클래스에서 다른 방식으로 동작하는 것을 의미하며, 상속과 함께 사용되어 코드의 유연성과 확장성을 제공합니다.

class Animal:
    def speak(self):
        return "Animal speaks"


class Cat(Animal):  # Animal 클래스를 상속
    def speak(self):
        return "Cat says Meow"


class Dog(Animal):  # Animal 클래스를 상속
    def speak(self):
        return "Dog says Woof"


def animal_sound(animal):
    print(animal.speak())

# 객체 생성
my_cat = Cat()
my_dog = Dog()

animal_sound(my_cat) #출력: Cat says Meow
animal_sound(my_dog) #출력: Dog says Woof

4. 캡슐화

캡슐화는 객체의 속성과 메서드를 외부에 직접 접근하지 못하도록 숨기는  것으로, 이를 통해 데이터 보호와 코드의 무결성을 유지할 수 있습니다.

class BankAccount:
    def __init__(self, balance):
        self.__balance = balance # Private variable
    def deposit(self, amount):
        self.__balance += amount

    def withdraw(self, amount):
        if amount <= self.__balance:
            self.__balance -= amount
        else:
            print("Insufficient funds")
    def get_balance(self):
        return self.__balance

# 객체 생성
account = BankAccount(1000)

# 메서드 사용
account.deposit(500)
account.withdraw(200)
print(account.get_balance()) # result: 1300

# 직접 접근 시도(에러 발생)

 

 

GitHub - Koras02/python-blog

Contribute to Koras02/python-blog development by creating an account on GitHub.

github.com

 

LIST

'Back-End > Python' 카테고리의 다른 글

[Python] 9(완). 고급 주제  (0) 2025.03.25
[Python] 8. 예외 처리  (0) 2025.03.02
[Python] 6. 파일 입출력  (0) 2025.02.27
[Python] 5. 모듈과 패키지  (0) 2025.02.24
[Python] 4.함수(Function)  (0) 2025.02.22