【发布时间】:2020-06-19 01:42:04
【问题描述】:
我已经搜索了一段时间,但我得到的都是关于 INSTANCE 属性而不是 CLASS 属性。 例如,这是来自 stackoverflow 的question 投票最多的答案
class C(ABC):
@property
@abstractmethod
def my_abstract_property(self):
return 'someValue'
class D(C)
def my_abstract_property(self):
return 'aValue'
class E(c)
# I expect the subclass should have this assignment,
# but how to enforce this?
my_abstract_property = 'aValue'
但是,这是 INSTANCE PROPERTY 案例,而不是我的 CLASS PROPERTY 案例。换句话说,调用D.my_abstract_property 将返回类似<unbound method D.my_abstract_property> 的内容。返回 'aValue' 是我所期望的,就像 E 类一样。
【问题讨论】:
-
所以你想要一个对于所有子类实例都是常量的类变量?
-
是的。这确实是我想要的。
-
不完全是。我确实想要一个类变量,但我希望它对于所有“实例”都是常量,而不是“子类”。我希望“C”的所有子类都有一个同名的类属性,但值可能会有所不同。
标签: python class properties abstract