单例代码

"""
单例模式 要实现 的最终效果:
无论创建多少次对象 ( 类名() ),创建出来的对象,始终都只有一个,这些对象名都指向同一个内存地址
 King.__instance = object.__new__(cls)   # 每一次执行object.__new__(cls)都会返回一个新对象,所以,应该把第一次创建出来 的这个对象(的引用)保存起来,当第二次第三次...跑__new__的时候,返回的都是第一次创建时候保存着的那个对象
 
"""

class King(object):

    __instance = None   # 用来存放第一次创建出来的这个对象,None表示 没有指向
    __isFirst = True

    def __new__(cls, name, age):

        if King.__instance == None:
            King.__instance = object.__new__(cls)
        return King.__instance


    def __init__(self, name, age):


        if King.__isFirst:
            self.name = name
            self.age = age
            King.__isFirst = False


king01 = King("嬴政", 40)
print(king01.name)

king02 = King("秦始皇", 45)
king03 = King("秦始皇02", 41)
print(king01.name)
print(king03.age)

你可能感兴趣的:(单例代码)