IT Share you

Python의 상속 및 init 메서드

shareyou 2020. 11. 10. 22:36
반응형

Python의 상속 및 init 메서드


저는 파이썬을 좋아합니다. 상속 및 __init__().

class Num:
    def __init__(self,num):
        self.n1 = num

class Num2(Num):
    def show(self):
        print self.n1

mynumber = Num2(8)
mynumber.show()

결과: 8

괜찮습니다. 하지만 교체 Num2와 함께

class Num2(Num):
    def __init__(self,num):
        self.n2 = num*2
    def show(self):
        print self.n1,self.n2

결과: Error. Num2 has no attribute "n1".

이 경우 어떻게 Num2액세스 n1있습니까?


첫 번째 상황에서, Num2클래스를 확장하고 Num하고 있기 때문에 특별한 방법은 이름을 재정의되지 않은 __init__()에서 Num2그것은로부터 상속됩니다, Num.

클래스가 __init__()메서드를 정의 __init__()하면 새로 생성 된 클래스 인스턴스에 대해 클래스 인스턴스화가 자동으로 호출됩니다 .

두 번째 상황에서는 재정의하기 때문에 __init__()Num2명시 적으로 슈퍼 클래스 (의 하나를 호출 할 필요가 Num) 당신이 그 동작을 확장하려는 경우.

class Num2(Num):
    def __init__(self,num):
        Num.__init__(self,num)
        self.n2 = num*2

init를 재정의 할 때 부모 클래스의 init도 호출해야합니다.

super(Num2, self).__init__(num)

__init __ () 메서드로 Python super () 이해하기


을 호출하지 않기 때문에 Num.__init__"n1"필드는 생성되지 않습니다. 그것을 부르면 거기에있을 것입니다.

참고 URL : https://stackoverflow.com/questions/5166473/inheritance-and-init-method-in-python

반응형