首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将单例和工厂设计模式与python相结合?

如何将单例和工厂设计模式与python相结合?
EN

Stack Overflow用户
提问于 2020-09-20 16:43:49
回答 1查看 428关注 0票数 0

假设有几个出版社,每个出版社出版很多书,我要处理很多记录,比如‘出版社名,书名’。

我想用一个唯一的名字(字符串)创建类'Press‘,但只有不同的字符串才能产生类'Press’的不同实例。

所以,我需要一个像'factory‘这样的类来工作,当一个记录包含一个新的press时创建一个新的实例,但如果已经存在同名的实例,它也可以作为单例工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-20 21:45:03

您可以使用唯一名称作为键,使用Press objects作为值来创建字典。这不需要是一个全球字典。您可以将其封装在某个类中,如下所示:

代码语言:javascript
运行
复制
class Press:
    def __init__(self, name):
        self.name = name
        self.books = []

class PressManager:
    presses = {}

    @classmethod
    def get_press(cls, name):
        if name not in cls.presses:
            cls.presses[name] = Press(name)
        return cls.presses[name]


example_press = PressManager.get_press("Test")

我将get_press()实现为一个类方法,因为我认为这就是您所想的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63977109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档