我想定义一个类,如下所示:
class ConfigManager:
@classmethod
def load_config(cls):
# do some complex stuff to load something
return config
__CONFIG = ConfigManager.load_config()
@classmethod
def get_config(cls):
return cls.__CONFIG
然后,当我运行以下代码时,它会报告一个NameError
:
x = ConfigManager.get_config()
Traceback (most recent call last):
File "test.py", line 1, in <module>
class ConfigManager:
File "test.py", line 7, in ConfigManager
__CONFIG = ConfigManager.load_config()
NameError: name 'ConfigManager' is not defined
为什么会发生这种错误?这是因为Python代码是通过解释执行的,当它转到第7行时,class ConfigManager
还没有完成定义吗
类对象仅在类主体和所有类装饰器被求值之后以其名称存在。这意味着您不能在
ConfigManager
主体内部使用名称ConfigManager
。这还包括在类完成之前调用的任何函数或方法在构建类主体时,可以引用以前在类主体中定义的名称和以前在类主体外部定义的名称
这意味着您可以定义一个函数来加载配置,只要它不需要类对象。请注意,即使在类内部定义,在您访问它时,它也不是(类-)方法
或者,如果需要,您可以延迟加载配置
相关问题 更多 >
编程相关推荐