본문 바로가기
Python Object-oriented Programming

super() Method

by 자동매매 2023. 3. 31.

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

댓글