1. 추상 클래스와 추상 메서드
추상 클래스는 하나 이상의 추상 메서드(구현이 정의되지 않은 메서드)를 포함하는 클래스입니다. 이는 다른 클래스가 상속받아 구현해야 하는 메서드를 정의하는 용도로 사용됩니다.
- 추상 클래스의 선언:
abc
모듈을 사용하여 추상 클래스와 추상 메서드를 선언합니다.
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
return "Woof!"
class Cat(Animal):
def make_sound(self):
return "Meow!"
2. 캡슐화
캡슐화는 객체의 세부 구현 내용을 숨기고, 외부 인터페이스만을 통해 접근을 제한하는 기술입니다. 이는 데이터와 코드를 외부의 간섭으로부터 보호합니다.
- Private 속성 사용: 속성 이름 앞에 두 개의 밑줄(
__
)을 추가하여 속성을 비공개로 만듭니다.
class Account:
def __init__(self, owner, balance):
self.owner = owner
self.__balance = balance
def deposit(self, amount):
if amount > 0:
self.__balance += amount
print("Deposit successful!")
3. 다중 상속
다중 상속은 하나의 클래스가 두 개 이상의 부모 클래스로부터 속성과 메서드를 상속받을 수 있게 해주는 기능입니다.
- 다중 상속의 사용: 클래스가 여러 기능을 조합해야 할 때 유용합니다.
class Flyable:
def fly(self):
print("Flying")
class Swimable:
def swim(self):
print("Swimming")
class Duck(Flyable, Swimable):
pass
duck = Duck()
duck.fly()
duck.swim()
4. 디자인 패턴
디자인 패턴은 특정 문제에 대한 해결책을 제공하는 일반적이고 재사용 가능한 솔루션입니다. 파이썬에서 자주 사용되는 디자인 패턴에는 싱글톤, 팩토리, 옵저버 패턴 등이 있습니다.
- 옵저버 패턴 예시: 객체의 상태 변경을 관찰하는 관찰자 목록에 자동으로 알림을 보냅니다.
class Subject:
def __init__(self):
self.__observers = []
def register_observer(self, observer):
self.__observers.append(observer)
def notify_observers(self, message):
for observer in self.__observers:
observer.notify(message)
class Observer:
def notify(self, message):
print(f"Received: {message}")
subject = Subject()
observer = Observer()
subject.register_observer(observer)
subject.notify_observers("Hello!")
'파이썬' 카테고리의 다른 글
파이썬 입문 - 8. 파이썬 객체지향 프로그래밍 (2) | 2024.04.21 |
---|---|
파이썬 입문 - 7. 파이썬 파일 입출력 (0) | 2024.04.21 |
파이썬 입문 - 6. 파이썬 예외 처리 (0) | 2024.04.21 |
파이썬 입문 - 5. 파이썬 컬렉션 (1) | 2024.04.21 |
파이썬 입문 - 4. 파이썬의 함수와 모듈 (2) | 2024.04.21 |