我上以下课
class Singleton:
_instance = None
class_variable = {'a': 1}
def __new__(cls, *args, **kwargs):
if cls._instance is not None:
cls._instance = super().__new__(cls, *args, **kwargs)
return cls._instance
当我创建实例并访问class_variable
inst_1 = Singleton()
print(inst_1.class_variable)
显示错误
11 inst_1 = Singleton()
---> 12 print(inst_1.class_variable)
AttributeError: 'NoneType' object has no attribute 'class_variable'
我不知道为什么?
答案 0 :(得分:0)
_instance
开始于None
。但是,您只会在_instance
不是 None
的情况下创建实际实例,因此您从未真正调用super().__new__
。
只需更改测试:
if cls._instance is None: