Python 调用超类初始化方法的困惑
阿债
posted @ 2009年7月22日 00:38
in 未分类
, 3026 阅读
Python中调用超类方法和其余语言迥然不同,如果子类SubClass要调用超类SuperClass的方法foo(),应该是
class SubClass(SuperClass):
def foo(self):
super(SubClass, self).foo() #我没有写错,第一个参数是SubClass
其实在Python2.2版之前的是这么写的
class SubClass(SuperClass):
def foo(self):
SuperClass.foo(self)
之所以要改版,就是为了解决多重继承中的“钻石形状问题”: B(A), C(A), D(B), D(C),具体中间出了什么问题偶也不清楚。
但这个新式写法,本来用得好好的,昨天居然出问题了。
class SubClass(SuperClass):
...