案例1:
class A(object):
def __init__(self):
print "A"
class B(A):
pass
c = b()
#output:
#A
案例2:
class A(object):
def __init__(self):
print "A"
class B(A):
def __init__(self):
print "B"
c = b()
#output:
#B
在case1中,它运行class A
的构造函数,在case2中,它运行class B
的构造函数。
因此,如果case1打印A,则理解它正在运行class A
构造函数,因为class B
已继承它。
然后在case2中它只运行class B
构造函数但不运行class A
构造函数。为什么会这样。
现在这里发生了什么。 python是否覆盖了class A
构造函数?或者发生了什么
"我是编程新手。"
答案 0 :(得分:2)
根据文档,构建类时,始终记住基类。因此,如果找不到某个属性,它将解析所有依赖项,该过程适用于所有基类。在您的情况下,类B没有init方法,因此它调用其父方法。在第二个示例中,如果要运行基类的构造函数,则可以使用super()函数。