Python 静态变量:未在其他构造函数中定义
访问类的静态成员时遇到问题。我的用例最简单的例子是:Python 静态变量:未在其他构造函数中定义,python,python-3.x,python-3.5,python-internals,Python,Python 3.x,Python 3.5,Python Internals,访问类的静态成员时遇到问题。我的用例最简单的例子是: class A: _tmpl = '<{}>' print(_tmpl) VAR = tuple(_tmpl.format(var) for var in ('a', 'b')) 这里发生了什么?我如何修复它(A._tmpl也不起作用…。不A尚未(完全)定义。这不起作用:AttributeError:type对象“A”没有属性“\u tmpl”(应该在问题中添加该属性…)解决方法是在类声明之后执行:A.V
class A:
_tmpl = '<{}>'
print(_tmpl)
VAR = tuple(_tmpl.format(var) for var in ('a', 'b'))
这里发生了什么?我如何修复它(
A._tmpl
也不起作用…。不<代码>A尚未(完全)定义。这不起作用:AttributeError:type对象“A”没有属性“\u tmpl”
(应该在问题中添加该属性…)解决方法是在类声明之后执行:A.VAR=tuple(…A.。\u tmpl…
这是类块作用域工作方式的结果,这是一个特例,但是,这并不创建封闭范围,这意味着理解构造(本质上使用函数范围)无法访问类块命名空间中的变量,就像方法在没有a的情况下无法访问\u tmpl
一样,但是在类主体A
中不存在yet@hiroprotagonist确保同时查看这两个答案,这两个答案都有很多好的信息,文档中的相关部分也有:
NameError: name '_tmpl' is not defined