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