Programing

Python의 상속 된 클래스에서 기본 클래스 메서드 (및 생성자)를 올바르게 호출하는 방법은 무엇입니까?

lottogame 2020. 12. 30. 07:38
반응형

Python의 상속 된 클래스에서 기본 클래스 메서드 (및 생성자)를 올바르게 호출하는 방법은 무엇입니까?


에서 상속 하는 Base클래스와 클래스 가 있다고 가정 합니다. Python의 자식 클래스에서 기본 클래스 생성자를 호출하는 올바른 방법은 무엇입니까? 나는 사용 합니까?ChildBasesuper

지금까지 내가 가지고있는 것의 예는 다음과 같습니다.

class Base(object):
   def __init__(self, value):
       self.value = value
   ...

class Child(Base):
   def __init__(self, something_else):
       super(Child, self).__init__(value=20)
       self.something_else = something_else
   ...

이 올바른지?

감사합니다, Boda Cydo.


맞아요. 다음 과 같이 클래스에서 __init__직접 메서드를 호출 할 수도 있습니다 Base.

class Child(Base):
    def __init__(self, something_else):
        Base.__init__(self, value = 20)
        self.something_else = something_else

그것이 제가 일반적으로하는 방식입니다. 그러나 다중 상속이있는 경우 잘 작동하지 않기 때문에 권장되지 않습니다. 물론 다중 상속은 그 자체로 모든 종류의 이상한 효과를 가지고 있으므로 전염병처럼 피합니다.

일반적으로 use super에서 상속하는 클래스의 경우 에도 필요합니다.


Python 3.1을 사용하는 경우 super는 새롭고 개선되었습니다. 클래스 및 인스턴스 인수를 알아냅니다. 따라서 인수없이 super를 호출해야합니다.

class Child(Base):
    def __init__(self, value, something_else):
        super().__init__(value)
        self.something_else = something_else
    ...

네, 맞습니다. 수업 에 합격 value하고 Child싶다면 이런 식으로 할 수 있습니다.

class Child(Base):
   def __init__(self, value, something_else):
       super(Child, self).__init__(value)
       self.something_else = something_else
   ...

참조 URL : https://stackoverflow.com/questions/2421307/how-to-correctly-call-base-class-methods-and-constructor-from-inherited-classe

반응형