一个例子来说明:
class Base:
value = 'foo'
class Derived(Base):
value = super().value + 'bar'
不能从没有参数的类主体中调用 super
。我正在寻找一种可以放置在类主体中的通用语法,而不管该类的名称或其基数如何,以从其(第一个)基类获取类属性。是否存在?
答案 0 :(得分:0)
不,当执行类主体时,该类本身不存在,因此您无法引用任何基类。
我唯一想到的解决方法是显式命名基类(例如,您示例中的Base.value
)。由于您只是在前一行(在class
语句中将其命名),所以即使您确实需要重复自己,这也不是一个沉重的负担。
还不太清楚为什么,您希望能够从派生类的类主体中访问基类。如果有充分的理由,您可能可以编写一些专门针对它的元类代码来启用它(例如,您可以为value
分配一个魔术值,元类会知道这意味着您想查找基数类的值)。
答案 1 :(得分:0)
您可以使用delta(ping_timestamp[5m]) < 20
在metaclass
内设置类变量value
的值:
也许是这样的:
Derived
class Base(type):
value = 'foo'
def __init__(self, name, bases, namespace):
self.value = Base.value + self.value
class Derived(metaclass=Base):
value = 'bar'
Derived.value, Base.value