类的单例模式

# new:创建对象自动调用
# new原理:返回值,返回值对象,当前类 -- 条件满足了  init
# 实例对象 -- instance
class Person(object):
    cls_shuxing = None
    # 控制只做一次初始化的开关 -- 开关打开 -- 表示判断
    is_First = True
    def __new__(cls, *args, **kwargs):
        if cls.cls_shuxing == None:
            # 创建对象 -- new
            cls.cls_shuxing = super().__new__(cls)
        return cls.cls_shuxing


    def __init__(self, name,age, sex,id):
        if self.is_First == True: # 实现只做一次初始化
            self.name = name
            self.age = age
            self.sex = sex
            self.id = id
            # 关掉开关
            self.is_First = False

    def __str__(self):
        return '名字是%s,年龄是%s,性别是%s,id是%s' % (self.name, self.age, self.sex, self.id)

dafan = Person('大凡', 18, '女',id=100)
print(dafan)
erfan = Person('二凡', 20, '男', id=110)
print(erfan)

  

猜你喜欢

转载自www.cnblogs.com/wf-skylark/p/9009448.html