Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python类继承_Python_Class - Fatal编程技术网

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