반응형
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
반응형
'IT Share you' 카테고리의 다른 글
R 플롯을 LaTeX로 가져 오나요? (0) | 2020.11.10 |
---|---|
Java 생성 .jar 파일 (0) | 2020.11.10 |
math.h를 포함 했음에도 불구하고 C에서 pow ()에 대한 정의되지 않은 참조 (0) | 2020.11.10 |
data.frame의 두 열 사이에 열 추가 (삽입) (0) | 2020.11.10 |
C의 구조체 및 포인터에 대한 malloc (0) | 2020.11.10 |