python中的单例

 
 
class Practice( object): cls_flag = False def __new__( cls): if cls.cls_flag == False: cls.cls_flag = object. __new__( cls) # 注意 object.__new__(cls) 括号中的 cls ,将类传到父类 object return cls.cls_flag def __init__( self): print( ' 执行了 init') a = Practice() b = Practice() print(a) print(b) class Practice1( object): def __init__( self): print( '66') a1 = Practice1() a2 = Practice1() print( id(a1)) print( id(a2))

结果:

 
 
执行了 init 执行了 init <__main__.Practice object at 0x000002B32CE99A58 > <__main__.Practice object at 0x000002B32CE99A58 > 66 66 2968575908496 2968575908664

单例中无论创建几个对象,都是对同一个内存对象进行操作的。
!!!    注意:单例必须返回一个当前类的new对象

猜你喜欢

转载自blog.csdn.net/weixin_31449201/article/details/80103369