day25_python_单例模式_始终只有一个对象

#Author:'haijing'
#date:2018/10/28

# class Foo:
# def __init__(self,name,age):
# self.name = name
# self.age = age
# obj = Foo('haijing',18) #obj为类Foo的对象,也称obj为Foo类的实例
# obj1 =Foo('haijing',18)
# obj2 = Foo('haijing',18) #内存地址开辟了三份


#单例模式 单个实例 使用同一份实例(对象)
class Foo:
__v = None #创建静态字段 可以在类内self.__v做共有属性调用
@classmethod #创建静态方法get_instance() 可用Foo.get_instance()调用,而不用创建对象
def get_instance(cls):
if cls.__v: #__v依旧是是Foo()的对象
return cls.__v
else:
cls.__v = Foo() #执行这一句后,__v就是Foo()的对象
return cls.__v

obj1 = Foo.get_instance() #创建obj1对象 obj1为类Foo的对象
print(obj1) #打印<__main__.Foo object at 0x0000025A990A4390>
obj2 = Foo.get_instance() #创建obj2对象
print(obj2) #打印<__main__.Foo object at 0x0000025A990A4390>
obj2 = Foo.get_instance() #创建obj3对象
print(obj2) #打印<__main__.Foo object at 0x0000025A990A4390>
#即obj1、obj2和obj3都是同一个对象









原文地址:https://www.cnblogs.com/YiYA-blog/p/9867700.html