Introduction to the Python super
super() 명령어는 상속 관계에서 대상의 부모 클래스를 반환하는 함수
구문
super(대상클래스_이름, 대상클래스_object)
# Class 선언 내부에서 super를 호출하면,
인자 전달을 따로 하지 않아도 자동으로 해당 클래스의 부모 클래스를 호출해줍니다.
참조 Code
class Employee:
def __init__(self, name, base_pay, bonus):
self.name = name
self.base_pay = base_pay
self.bonus = bonus
def get_pay(self):
return self.base_pay + self.bonusCode
class SalesEmployee(Employee):
def __init__(self, name, base_pay, bonus, sales_incentive):
self.name = name
self.base_pay = base_pay
self.bonus = bonus
self.sales_incentive = sales_incentive
def get_pay(self):
return self.base_pay + self.bonus + self.sales_incentive
super().__init__()
클래스의 __init__() 메서드에는 Employee 클래스의 __init__() 메서드 에 있는 것과 동일한 부분이 있습니다.
중복을 방지하려면 SalesEmployee 클래스의 __init__() 메서드 에서 Employee 클래스의 __init__() 메서드를 호출할 수 있습니다.
SalesEmployee 클래스에서 Employee 클래스를 참조하려면 super()를 사용합니다. super()는 자식 클래스에서 부모 클래스의 참조를 반환합니다.
다음은 super()를 사용하여 Employee 클래스의 __init__() 메서드를 호출 하는 SalesEmployee 클래스를 다시 정의합니다.
class SalesEmployee(Employee):
def __init__(self, name, base_pay, bonus, sales_incentive):
super().__init__(name, base_pay, bonus)
self.sales_incentive = sales_incentive
def get_pay(self):
return self.base_pay + self.bonus + self.sales_incentive
Delegating(위임) to other methods in the parent class
상속
super().get_pay()
부모 메서드에 대한 위
class SalesEmployee(Employee):
def __init__(self, name, base_pay, bonus, sales_incentive):
super().__init__(name, base_pay, bonus)
self.sales_incentive = sales_incentive
def get_pay(self):
return super().get_pay() + self.sales_incentive
전체 code
class Employee:
def __init__(self, name, base_pay, bonus):
self.name = name
self.base_pay = base_pay
self.bonus = bonus
def get_pay(self):
return self.base_pay + self.bonus
class SalesEmployee(Employee):
def __init__(self, name, base_pay, bonus, sales_incentive):
super().__init__(name, base_pay, bonus)
self.sales_incentive = sales_incentive
def get_pay(self):
return super().get_pay() + self.sales_incentive
if __name__ == '__main__':
sales_employee = SalesEmployee('John', 5000, 1000, 2000)
print(sales_employee.get_pay()) # 8000
인수 명명하여 선언
class Employee:
def __init__(self, name, base_pay, bonus):
self.name = name
self.base_pay = base_pay
self.bonus = bonus
def get_pay(self):
return self.base_pay + self.bonus
class SalesEmployee(Employee):
def __init__(self, name, base_pay, bonus, sales_incentive):
super(SalesEmployee,self).__init__(name, base_pay, bonus)
self.sales_incentive = sales_incentive
def get_pay(self):
return super(SalesEmployee, self).get_pay() + self.sales_incentive
if __name__ == '__main__':
sales_employee = SalesEmployee('John', 5000, 1000, 2000)
print(sales_employee.get_pay()) # 8000
Summary
- super()를 사용하여 자식 클래스에서 부모 클래스의 메서드를 호출합니다.
'Python Object-oriented Programming' 카테고리의 다른 글
type Class (0) | 2023.04.01 |
---|---|
Abstract Class (0) | 2023.03.31 |
Static Methods (0) | 2023.03.31 |
__new__() Method (0) | 2023.03.31 |
[ OOP ] Index (0) | 2023.03.31 |
댓글