将类的实例存储在类变量中是一种很好的模式

时间:2014-10-23 16:33:20

标签: python class oop

我在Python中经常使用的一种设计模式是:

class Foo:
    foos = []
    def __init__(self, argument):
        initialize_instance()
        foos.append(self)

这是否有名称,是否被认为是有用的模式?

1 个答案:

答案 0 :(得分:1)

我真的不认为这是OOP的一个好习惯(我不是Python的专家)。使用静态(如列表foos)几乎总是一个糟糕的概念。如评论中所述,更好的解决方案是设置服务类(在OOP中查看SOA模式)以索引Foo的所有实例并进一步检索它们。

但是,不要认为这是注册表模式的变体。这是这种模式的反模式,阻止了类之间正确的低耦合。当然,Python并不是做强OOP并且尊重这一点的更好的语言,但无论如何我都不建议这样做。