728x90
반응형
SMALL
super() 메서드
부모 클래스와 자식 클래스에서 메서드를 작성하면 부모 클래스의 메서드를 자식 클래스에서 사용할 수 없다. 이 경우 자식 클래스의 메서드만 사용할 수 있으며, 자식 클래스의 메서드가 부모 클래스의 메서드를 대체하게 된다. super() 메서드는 자식 클래스에서 부모 클래스의 생성자 또는 메서드를 호출하는 데 사용된다.
연산자 오버로딩 (Operator Overloading)
연산자가 원래 목적 외의 추가 작업을 수행하는 경우 이를 연산자 오버로딩이라고 한다. 연산자 오버로딩을 사용하면 연산자를 사용자 정의 클래스 객체와 함께 사용할 수 있게 되어 코드의 가독성이 향상된다.
|
쉽게 말해, 연산자 오버로딩은 새 객체로 변환 되어서도 자유로운 연산이 가능하다는 것이다. 예를 들어, 두 개의 복소수 객체를 더하려면 다음과 같이 연산자 오버로딩을 사용할 수 있다.
class Complex:
def __init__(self, real, imag):
self.real = real
self.imag = imag
def __add__(self, other):
return Complex(self.real+ + other.real, self.imag + other.imag)
def __str__(self):
return f"{self.real} + {self.imag}i"
c1 = Complex(1, 2)
c2 = Complex(3, 4)
c3 = c1 + c2
print(c3)
실습 1
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
# 연산자 오버로딩
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
# 메서드 오버라이딩
def __str__(self):
return f"Vector({self.x}, {self.y})"
a = Vector(1, 2)
b = Vector(3, 4)
print(a) # Vector(1, 2)
print(b) # Vector(3, 4)
c = a + b
print(c) # Vector(4, 6)
실습 2
class ParentClass:
def __init__(self):
self.name = 'parent'
self.number = 10
def __str__(self):
return f'ParentClass name : {self.name}, number : {self.number}'
def add_num(self, new_number):
print('부모 클래스', new_number, '만큼 더하기')
self.number = self.number + new_number
def minus_num(self, new_number):
print('부모 클래스', new_number, '만큼 빼기')
self.number = self.number - new_number
def multiple_num(self, new_number):
print('자식 클래스 곱하기')
self.number = self.number * new_number
class ChildClass(ParentClass):
def __init__(self):
super().__init__()
self.name = 'child'
self.number = 10
def __str__(self):
return f'ChildClass name : {self.name}, number : {self.number}'
def add_num(self, new_number):
print('자식 클래스에서 5 더하기')
self.number = self.number + 5
def minus_num(self, new_number):
print('자식 클래스에서 5 빼기?')
self.number = self.number - 5
parent = ParentClass()
child = ChildClass()
print('클래스 정보')
print(parent)
print(child)
print()
print('7 더하기')
parent.add_num(7)
child.add_num(7)
print(parent)
print(child)
print()
print('7 빼기')
parent.minus_num(7)
child.minus_num(7)
print(parent)
print(child)
print()
print('자식 클래스 10 곱하기')
child.multiple_num(10)
print(child)
728x90
반응형
LIST
'Programming > Python' 카테고리의 다른 글
[Python] 함수 데코레이터 (Function Decorator) (0) | 2023.06.16 |
---|---|
[Python] 제네레이터 (Generator) (0) | 2023.06.16 |
[Python] 다형성 (Polymorphism) (1) (0) | 2023.06.12 |
[Python] 네임 스페이스 (Namespace) (0) | 2023.06.12 |
[Python] 상속 (Inheritance) (0) | 2023.06.09 |