728x90
프로그램 설계방법론의 일종으로, 명령형 프로그래밍에 속함
프로그램을 수많은 객체라는 기본 단위로 나누고, 이들의 상호작용으로 서술하는 방식
객체지향 프로그래밍을 사용하면 코드를 모듈화하고 유지보수하기 쉬움
클래스와 객체
클래스는 비슷한 특성을 가진 객체를 만드기 위한 일종의 틀
객체는 클래스를 기반으로 생성된 instance
객체는 "데이터"와 데이터를 처리하는 "메서드(함수)"를 포함
캡슐화
객체 내부의 데이터와 메서드는 외부에서 직접 접근하지 못하도록 제한되고, 필요한 경우에만 공개된 인터페이스를 통해 상호작용할 수 있도록 하는 원칙
class BankAccount:
def __init__(self, balance=0):
self._balance = balance # _balance는 보호된 속성
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
상속
클래스 간에 관계를 설정하여 기존 클래스의 특성과 동작을 재사용하고, 새로운 클래스를 정의
코드의 재사용성이 향상됨
class Animal:
def __init__(self, name):
self.name = name
def make_sound(self):
pass # 하위 클래스에서 구현할 메서드
class Dog(Animal):
def make_sound(self):
return "Woof!"
class Cat(Animal):
def make_sound(self):
return "Meow!"
my_dog = Dog("Buddy")
my_cat = Cat("Whiskers")
print(my_dog.make_sound()) # 출력: Woof!
print(my_cat.make_sound()) # 출력: Meow!
다형성
같은 이름의 메서드를 각 객체에서 다르게 구현될 수 있는 특성
코드의 유연성을 증가시킴
class Shape:
def area(self):
pass # 하위 클래스에서 구현할 메서드
class Square(Shape):
def __init__(self, side_length):
self.side_length = side_length
def area(self):
return self.side_length ** 2
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
square = Square(5)
circle = Circle(3)
print(square.area()) # 출력: 25
print(circle.area()) # 출력: 28.26
후속
728x90
'Python' 카테고리의 다른 글
pyproject.toml 이란? (0) | 2024.03.03 |
---|---|
객체지향 설계 5원칙 (SOLID) (0) | 2024.03.02 |
파이썬 병렬처리 라이브러리 비교 (1) | 2024.02.26 |
파이썬 클래스 속성 (인스턴스 속성, 클래스 속성) (0) | 2023.06.05 |
파이썬 메서드 (인스턴스 메서드, 정적 메서드, 클래스 메서드) (0) | 2023.06.05 |