请考虑以下代码:
>>> class A:
... k = 1
...
>>> class B(A):
... k = super(B, cls).k
...
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "<console>", line 2, in B1
NameError: name 'B' is not defined
为什么这会导致错误,最好的解决方法是什么? 感谢。
答案 0 :(得分:3)
super()
只能在方法中使用,而不能在类定义中使用。它需要访问MRO类,在构建B
类主体时尚不知道。
更好的是,B
在定义类时尚未绑定!在完成课堂主体之后才会发生这种情况;在创建类对象之前,首先需要一个类体。
请勿覆盖k
:
class A:
k = 1
class B(A):
pass
和B.k
继承自A
。
或直接引用;毕竟,在确定类时,你确切知道你有哪些基类:
class A:
k = 1
class B(A):
k = A.k