美文网首页
Python 单例

Python 单例

作者: 一本大书 | 来源:发表于2018-10-27 21:17 被阅读7次

基本实现:通过创建一个类属性指向实例对象

class Dog:
    # 定义一个私有类属性 
    __instance = None
    def __new__(cls):
        if cls.__instance == None:
            cls.__instance = super().__new__(cls)
            return cls.__instance
        else:
            # 上一次创建的对象的引用
            return cls.__instance
a = Dog()
print(id(a))

b = Dog()
print(id(b))

打印结果:

4387682736
4387682736

拓展:初始化带参数的单例

class Dog:
    # 定义一个私有类属性 
    __instance = None
    __init_flag = False
    def __new__(cls, name):
        if cls.__instance == None:
            cls.__instance = super().__new__(cls)
            return cls.__instance
        else:
            # 上一次创建的对象的引用
            return cls.__instance

    def __init__(self, name):
        if Dog.__init_flag == False:
            self.name = name
            Dog.__init_flag = True
            pass
        pass


a = Dog("旺财")
print(id(a))
print(a.name)

b = Dog("小白")
print(id(b))
print(b.name) 

打印结果:

4466540616
旺财
4466540616
旺财

相关文章

网友评论

      本文标题:Python 单例

      本文链接:https://www.haomeiwen.com/subject/koqjtqtx.html