当前位置 博文首页 > m0_51723227的博客:13 单例特殊化初始值
类名()
创建对象时,Python
的解释器都会自动调用两个方法:__new__
分配空间__init__
对象初始化在上一小节对__new__
方法改造之后,每次都会得到第一次被创建对象的引用.
但是:初始化方法还会被再次调用
1.定义一个类属性init_flag
标记是否执行过初始化动作,初始值为False
2.在__init__
方法中,判断init_flag
. 如果为False
就执行初始化动作
3.然后将init_flag
设置为True
4.这样,再次自动调用__init__
方法时, 初始化动作就不会被再次执行了
class MusicPlayer:
init_instance = False
def __init__(self):
# 1 首先判断真假
if MusicPlayer.init_instance: # if 后面如果不跟其它,则默认为真
return # 记得这个吗?,在定义函数里面使用return便表示不再运行下面的代码
# 2 如果是假,就执行初始化动作,然后赋值给instance 真
print("哈哈哈哈哈哈")
# 3 如果是真,结束
MusicPlayer.init_instance = True
a = MusicPlayer()
b = MusicPlayer()
c = MusicPlayer()
执行结果:
哈哈哈哈哈哈
正常情况下,创建一个对象,便执行一次初始化动作,这里创建了三个对象,但是却只执行了一次,满足条件.!
新人创作,若有问题,欢迎大佬斧正
cs