Python 3 不允许您在其主体内引用类(方法中除外):
class A:
static_attribute = A()
def __init__(self):
...
这就提出了一个NameError
在第二行,因为'A' is not defined
.
备择方案
我很快找到了一种解决方法:
class A:
@property
@classmethod
def static_property(cls):
return A()
def __init__(self):
...
尽管这并不完全相同,因为它每次都会返回不同的实例(您可以通过第一次将实例保存到静态变量来防止这种情况)。
是否有更简单和/或更优雅的替代方案?
EDIT:我已将有关此限制原因的问题移至单独的问题 https://stackoverflow.com/questions/34558324/why-doesnt-python-allow-referencing-a-class-inside-its-definition
表达方式A()
上课之前无法运行A
已被定义。在您的第一个代码块中,定义A
在您尝试执行时尚未完成A()
.
这是一个更简单的替代方案:
class A:
def __init__(self):
...
A.static_attribute = A()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)