【发布时间】:2011-07-09 11:38:09
【问题描述】:
我的第一个问题:
我已经在互联网上搜索过,也在这里阅读了几个问题和答案,最后找到了为我的 python 代码编写单例类的方法。 我还阅读了有关 new() 函数和其他一些内容的 python 文档,但仍然对所有 new(cls, *args , **kw) 东西等等!
例如我写了这样的测试代码:
class Singleton(object):
def __new__(cls, *args, **kwargs):
if '_inst' not in vars(cls):
cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
return cls._instance
class printer(Singleton):
def __init__(self):
print "I am a new Object, and will remain until the end of time!"
if __name__ == '__main__':
printer()
结果是文本“我是一个新的对象,将一直存在到时间的尽头!” 但是这是如何工作的,我的意思是,我不知道该怎么说,例如我真的很困惑:
vars(cls):在if '_inst' not in vars(cls)行中
vars(cls) 从哪里出来,我之前没有声明过! 有人可以为我在单例类中澄清这些事情以及关于最后一行的一些内容
if __name__ == '__main__':
printer()
【问题讨论】:
-
具有讽刺意味的是,这种对单例的尝试甚至都无法正常工作。有人无法满足于一个名字,现在您可以根据需要实例化任意多个...
标签: python syntax singleton new-operator main