我在python中有这个通用问题。基类定义了一个类属性class_attr
。这个属性是不可变的,在这种情况下它是一个数字。我想从派生类更改此属性,从而重新绑定Base.class_attr
到新值(在我的玩具案例中,增加它)。
问题是如何在没有明确命名Base
的情况下做到这一点 statement Base.class_attr += 1
。
class Base(object):
# class attribute:
class_attr = 0
class Derived(Base):
@classmethod
def increment_class_attr(cls):
Base.class_attr += 1
# is there a solution which does not name the owner of the
# class_attr explicitly?
# This would cause the definition of Derived.class_attr,
# thus Base.class_attr and Derived.class_attr would be
# two independent attributes, no more in sync:
# cls.class_attr += 1
Derived.increment_class_attr()
Derived.increment_class_attr()
print Base.class_attr # 2
请注意:我的问题是,我可以重新绑定父类的属性。我不追求这个问题的变通解决方案(例如,转移increment_class_attr
到基地)。