Python의 상속 및 초기화 방법
나는 파이썬의 원조야.나는 상속을 이해할 수 없고,__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() 이해
다음과 같은 Num2 클래스의 간단한 변경 사항:
super().__init__(num)
이것은 python3에서 작동합니다.
class Num:
def __init__(self,num):
self.n1 = num
class Num2(Num):
def __init__(self,num):
super().__init__(num)
self.n2 = num*2
def show(self):
print (self.n1,self.n2)
mynumber = Num2(8)
mynumber.show()
네가 전화를 안하니까,Num.__init__
필드 "n1"은 생성되지 않습니다.그것을 부르면 거기에 있을 것입니다.
이를 바탕으로 다양한 답변을 수집하고 승인된 답변으로 병합할 수 있습니까?
위의 두 개의 최신 답변에서 입력을 수집하여 위키 답변을 작성하고 있습니다.
Sacchit Jaiswal & Tom Jelen의 코드로 대답합니다.
이유 또는 마우로 로코가 필요로 하는 이유로 답변합니다.
init를 재정의할 때는 부모 클래스의 init도 호출해야 합니다.
__init__() 메서드를 사용한 Python super() 이해
super(Num2, self).__init__(num)
이것은 python3에서 작동합니다.
class Num:
def __init__(self,num):
self.n1 = num
class Num2(Num):
def __init__(self,num):
super().__init__(num)
self.n2 = num*2
def show(self):
print (self.n1,self.n2)
mynumber = Num2(8)
mynumber.show()
언급URL : https://stackoverflow.com/questions/5166473/inheritance-and-init-method-in-python
'programing' 카테고리의 다른 글
각진 5개의 재료 - 180도에서 고착된 폼 필드 (0) | 2023.07.27 |
---|---|
Xcode 대상 배포 대상 대 프로젝트 배포 대상 (0) | 2023.07.27 |
소수점 이하가 예상되는 경우 MariaDB 사용자 정의 함수가 int 또는 null을 반환합니다. (0) | 2023.07.27 |
PyQt 응용 프로그램에서 스레드화:Qt 스레드 또는 Python 스레드를 사용합니까? (0) | 2023.07.27 |
Python의 Argparse에서 동일한 옵션을 여러 번 사용하기 (0) | 2023.07.27 |