我知道有两种从派生类调用超类构造函数的方法:super().__init__()
和base.__init__(self)
。为什么第二种方法需要我明确提供self
参数?
以下代码片段展示了其中的区别:
class base:
def __init__(self,/):
print("initializing")
class der(base):
def __init__(self):
super().__init__() #no error
base.__init__(self) #no error
base.__init__() #error, self required
obj = der()
第三次构造函数调用抛出此错误:
File "demo.py", line 11, in <module>
obj = der()
^^^^^
File "demo.py", line 9, in __init__
base.__init__() #error, should be: base.__init__(self)
^^^^^^^^^^^^^^^
TypeError: base.__init__() missing 1 required positional argument: 'self'
我希望base.__init__()
能够工作,因为super().__init__()
不需要明确的self
。