考虑以下代码:
>>> 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
为什么这会导致错误?解决该错误的最佳方法是什么?谢谢。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句