【发布时间】:2019-04-10 21:55:06
【问题描述】:
我是 python 新手。我试图使用 super() 方法访问子类中的父类变量,但它抛出错误“无参数”。使用类名访问类变量是可行的,但我想知道是否可以使用 super() 方法访问它们。
class Parent(object):
__props__ = (
('a', str, 'a var'),
('b', int, 'b var')
)
def __init__(self):
self.test = 'foo'
class Child(Parent):
__props__ = super().__props__ + (
('c', str, 'foo'),
) # Parent.__props__
def __init__(self):
super().__init__()
错误:
__props__ = super().__props__ + (
RuntimeError: super(): no arguments
【问题讨论】:
-
我看不到你在这里要做什么。
super()是您在实例方法中调用的东西,而不是在类级别。而且你也不应该定义自己的双下划线属性。 -
在python 3中,类默认派生自
object,所以你可以简单地删除object;关于这个问题;您正在尝试在类顶级定义中使用super();这是做不到的。 -
@DanielRoseman 使代码更易于维护,例如,如果我想更改基类型的名称。到处使用 super 时,只需要在 class 行中更改即可。
标签: python python-3.x class