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()를 사용하여 자식 클래스에서 부모 클래스의 메서드를 호출합니다.