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 | 
 
										
									 
										
									 
										
									