为什么Python3.x的超级()魔法?在Python 3.x中,super()可以在没有参数的情况下调用:class A(object):
def x(self):
print("Hey now")class B(A):
def x(self):
super().x()>>> B().x()
Hey now为了使其工作,执行了一些编译时魔术,其结果之一是下面的代码(重新绑定)super到super_)失败:super_ = superclass A(object):
def x(self):
print("No flipping")class B(A):
def x(self):
super_().x()>>> B().x()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in x
RuntimeError: super(): __class__ cell not found为什么super()没有编译器的帮助,无法在运行时解析超类?有没有实际情况下,这种行为,或它的根本原因,可能咬一个粗心的程序员?..还有一个附带的问题:Python中还有其他函数、方法等的例子可以通过将它们重新绑定到不同的名称来打破吗?
2 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
super()
super()
super(ReferenceToClassMethodIsBeingDefinedIn, self)
ReferenceToClassMethodIsBeingDefinedIn
__class__
super()
添加回答
举报
0/150
提交
取消