A:
super( BasicElement, self ).__init__()
B:
super( BasicElement, self ).__init__( self )
A和B有什么区别?我遇到的大多数示例使用A,但我遇到的问题是A没有调用父__init__函数,但是B是。为什么会这样?应该使用哪种情况?在哪种情况下?
答案 0 :(得分:26)
除非以某种方式BasicElement类的__init__
接受参数,否则您不需要执行第二种形式。
class A(object):
def __init__(self):
print "Inside class A init"
class B(A):
def __init__(self):
super(B, self).__init__()
print "Inside class B init"
>>> b = B()
Inside class A init
Inside class B init
或者需要init参数的类:
class A(object):
def __init__(self, arg):
print "Inside class A init. arg =", arg
class B(A):
def __init__(self):
super(B, self).__init__("foo")
print "Inside class B init"
>>> b = B()
Inside class A init. arg = foo
Inside class B init