【发布时间】:2018-06-26 09:28:37
【问题描述】:
我的一个同事今天写了类似下面的代码,让我看一下,我花了一段时间才发现错误:
class A():
def __init__(self):
print('A')
class B(A):
def __init__(self):
super(B).__init__()
b = B()
这里的问题是B 的构造函数中没有super() 的self 参数。令我惊讶的是,在这种情况下绝对没有发生任何事情,即没有错误,什么都没有。 super(B) 创建的 super 对象包含什么?作为一个对象,它显然有一个构造函数,所以这就是被调用的对象,但是那个对象与B 有什么关系呢?特别是,为什么这是有效代码并且不会在某处引发异常? super(B) 是一个有实际用途的对象吗?那会是什么?
【问题讨论】:
标签: python python-3.x class super