我有一组对象是同一个类的实例。我希望他们分享一个共同的属性。 好的,我可以简单地定义一个类属性:
MyClass():
classattr = None
def __init__(self):
self.instattr = None
但是,我想使用相同的类创建另一组对象,并将common属性设置为除第一组之外的其他对象。
我在类中需要这个属性,所以我可以将方法装饰为属性,同时仍然在属性方法中使用该属性。
有没有办法做到这一点?
答案 0 :(得分:1)
您可以将类属性设为字典;每个'组'实例都在该字典中给出了它自己的密钥:
class MyClass():
classattr_groups = {'group1': None, 'group2': None}
整个对象仍然在实例之间共享,但是你可以使用其中一个键作为一组实例,另一个键用于第二组,等等。
另一种方法是子类;为每个组赋予自己的派生类和自己的类属性:
class MyClass():
classattr = None
class MyClassGroup1(MyClass):
classattr = 'group1'
class MyClassGroup2(MyClass):
classattr = 'group2'