나는이 있습니다파이썬 서브 클래스는 반드시 수퍼 클래스 생성자를 호출해야합니까?
#!/usr/bin/env python
class myclass1(object):
def __init__(self, arg1):
self.var1 = arg1
class myclass2(myclass1):
def f1(self):
print "in f1"
class myclass3(myclass1):
def __init__(self, arg1):
self.var2 = arg1
self.c2 = myclass2()
p= myclass3(5)
이 나에게 오류를 제공합니다
Traceback (most recent call last):
File "./pythoninherit.py", line 39, in <module>
p= myclass3(5)
File "./pythoninherit.py", line 29, in __init__
self.c2 = myclass2()
TypeError: __init__() takes exactly 2 arguments (1 given)
질문 : 왜 오류가 주어집니다?
왜이 경우 myclass1 __init__
이 자동으로 호출 되었습니까?
저는 이것이 파이썬에서는 발생하지 않는다고 생각했습니다.
은'__init__' 방법은 상속됩니다. 'class1'의'__init__' 메쏘드는 인자를 취하고 인자없이 인자를 호출합니다. –
당신은 충분한 인수로'__init__'를 호출하지 않았기 때문에. 그래서 당신의 제목에 "예"라고 대답하십시오. 하위 클래스를 구성 할 때 부모 클래스에 전달 될 인수를 전달해야합니다. – Cfreak
@IsmailBadawi 답변으로 추가하십시오. – abc