在Python的子类成员中使用super

爵士蓝

考虑以下代码:

>>> 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

为什么这会导致错误?解决该错误的最佳方法是什么?谢谢。

马丁·彼得斯(Martijn Pieters)

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Python的子类成员中使用super

来自分类Dev

继承,子类,在 Java 中使用 super.print() 打印

来自分类Dev

如何使用super()在python中初始化子类参数

来自分类Dev

在Python中使用super()进行多重继承

来自分类Dev

我应该在子类中使用super()调用父类方法吗

来自分类Dev

为什么在子类中使用 super(qualifications) 在超类中定义时会抛出 ReferenceError ?

来自分类Dev

为什么父类要在Python中使用子类的实例?

来自分类Dev

在python的主类中使用子类属性

来自分类Dev

在Java中使用Super

来自分类Dev

Python:覆盖子类中的静态成员

来自分类Dev

Python - 调用 super() 作为子类的属性

来自分类Dev

子类包含基类使用的静态成员

来自分类Dev

为什么在Python中子类不能使用super调用父类方法

来自分类Dev

在UILabel等中使用NSString子类

来自分类Dev

在React中使用SASS子类

来自分类Dev

在MetaData子类中使用AdditionalMetadata

来自分类Dev

澄清/何时/何地在Django / Python中使用super

来自分类Dev

什么时候在python中使用super(type)?

来自分类Dev

为什么在孩子的init方法中使用Python super?

来自分类Dev

什么时候在python中使用super(type)?

来自分类Dev

在Python2.7中使用'super'的示例

来自分类Dev

在方法声明中使用super

来自分类Dev

在Python中进行子类化时追加到成员列表

来自分类Dev

使用私有成员的子类构造函数

来自分类Dev

尝试访问子类成员时使用泛型

来自分类Dev

使用多态和列表时访问子类成员

来自分类Dev

如何通过使用父类的引用访问子类的成员?

来自分类Dev

不使用super的子类方法的默认行为是什么?

来自分类Dev

使用带有子类型参数的 super 方法

Related 相关文章

热门标签

归档