python3 单例模式
在使用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方法怎么实现单例模式?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我的windows+python3.5运行成功,你如果不成功可以试一下注释
感谢回答,把args 和*kwargs删除确实可以,不过为什么呢?这两个代表任意参数为什么会有影响?
Python 3.5.2 测试通过