Python设计模式 - 单例模式

单例模式:确保一个类只有一个实例,并且提供一个访问它的全局方法

class Singleton(object):
    __instance =None
    __isFirstInit = False\

    def __new__(cls, name):
        if not cls.__instance:
            Singleton.__instance = super().__new__(cls)
        return cls.__instance

    def __init__(self,name):
        if not self.__isFirstInit:
            self.__name = name
            Singleton.__isFirstInit = True;

    def getName(self):
        return self.__name

def Test():
    tom = Singleton("Tom")
    kate = Singleton("Kate")

    print(tom.getName())
    print(kate.getName())

    print("id(tom)",id(tom))
    print("id(kate)", id(kate))
Test()

运行结果:

Tom
Tom
id(tom) 900466049280
id(kate) 900466049280

__new __负责创建对象, __init __负责对象的初始化

__new __是类的方法,通过类名实例化对象的时候自动调用, 创建一个实例后返回这个实例对象,并且将其传递给__init __ 方法中的self参数。 __init __ 是对象方法,在每一次实例化对象之后调用。

aaa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wb175208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值