为什么在使用__new__时不能访问类变量?

时间:2019-09-20 14:29:52

标签: python singleton

我上以下课

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'

我不知道为什么?

1 个答案:

答案 0 :(得分:0)

_instance开始于None。但是,您只会在_instance不是 None的情况下创建实际实例,因此您从未真正调用super().__new__

只需更改测试:

    if cls._instance is None: