在使用python2例子的__new__实现单例模式时候,
class Singleton(object):
__instance = None
def __new__(cls, *args, **kwargs):
if cls.__instance is None:
cls.__instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
return cls.__instance
def __init__(self, status_number):
self.status_number = status_number
s1 = Singleton(2)
s2 = Singleton(5)
print (s1)
print (s2)
print(s1.status_number)
print(s2.status_number)
别人用python2实现的,现在我用python3.6运行这段代码错误
错误信息:
in __new__cls.__instance = super(Singleton, cls).__new__(cls, args, *kwargs)
TypeError: object() takes no parameters
问题
1:想问一下为什么2.7运行没问题,3.6出错呢?2.7和3.6的object不同吗?
2:如果用python3.6 的new方法怎么实现单例模式?
我的windows+python3.5运行成功,你如果不成功可以试一下注释