考虑一下-基类A,类B从A继承,类C从B继承。在初始化器中调用父类初始化器的通用方法是什么?如果这听起来仍然不太明确,请使用以下代码。
class A(object):
def __init__(self):
print "Initialiser A was called"
class B(A):
def __init__(self):
super(B,self).__init__()
print "Initialiser B was called"
class C(B):
def __init__(self):
super(C,self).__init__()
print "Initialiser C was called"
c = C()
这就是我现在的做法。但是它似乎仍然太泛泛,您仍然必须手动传递正确的类型。
现在,我尝试使用self.__class__super()作为第一个参数,但是显然,它不起作用-如果将其放在C的初始化程序中-足够公平,B的初始化程序将被调用。如果在B中执行相同的操作,则“ self”仍指向C的实例,因此您最终再次调用B的初始化程序(此操作以无限递归结束)。
现在无需考虑钻石继承,我只是想解决这个特定问题。
UYOU
杨__羊羊
相关分类