Python类继承
我有以下代码:Python类继承,python,class,Python,Class,我有以下代码: class A(object): def __init__(self): print " A" class B(A): def __init__(self): print "B" x=B() print "Done" 结果是:“B”被打印出来 如果您想使用A的\uuuuu init\uuuuu同时也使用B的\uuuu init\uuuuu,那么即使使用B类继承A,为什么不打印“A”,然后尝试: class A(object):
class A(object):
def __init__(self):
print " A"
class B(A):
def __init__(self):
print "B"
x=B()
print "Done"
结果是:“B”被打印出来
如果您想使用A的
\uuuuu init\uuuuu
同时也使用B的\uuuu init\uuuuu
,那么即使使用B类继承A,为什么不打印“A”,然后尝试:
class A(object):
def __init__(self):
print " A"
class B(A):
def __init__(self):
A.__init__(self)
print "B"
x=B()
print "Done"
或者,如果您不想按名称提及超类:
class A(object):
def __init__(self):
print " A"
class B(A):
def __init__(self):
super(B, self).__init__()
print "B"
x=B()
print "Done"
这两者都产生输出:
A
B
Done
因为您正在重写init方法?Python不会自动为您调用超类构造函数;你需要自己明确地称呼它。这只是悄无声息地传递的事实是Python类系统实现的设计缺陷之一。永远不要使用
super(self.\uuuu class\uuuu,self)
。只要您生成B
和self的后代,它就会失败。\uuuuu class\uuuu
不再是B
。