0

我有一组对象,它们是同一类的实例。我希望他们有一个共同的属性。好的,我可以简单地定义一个类属性:

MyClass():
    classattr = None

    def __init__(self):
        self.instattr = None

但是,我想使用同一类创建另一组对象,并将公共属性设置为第一组以外的其他对象。

我需要在类中使用这个属性,这样我就可以将方法装饰为属性,同时仍然在属性方法中使用该属性。

有没有办法做到这一点?

4

1 回答 1

1

您可以将类属性设为字典;每个“组”实例在该字典中都有自己的键:

class MyClass():
    classattr_groups = {'group1': None, 'group2': None}

整个对象仍然在实例之间共享,但是您可以将其中一个键用于一组实例,将另一个键用于第二组,等等。

另一种方法是子类化;给每个组自己的派生类和自己的类属性:

class MyClass():
    classattr = None


class MyClassGroup1(MyClass):
    classattr = 'group1'


class MyClassGroup2(MyClass):
    classattr = 'group2'
于 2014-01-28T11:45:55.783 回答