如何从类定义中的列表理解访问其他类变量?以下操作在Python2中有效,但在Python3中失败:
class Foo:
x = 5
y = [x for i in range(1)]
python 3.2给出了错误:
NameError: global name 'x' is not defined
尝试
Foo.x
也不管用。关于在python 3中如何做到这一点有什么想法吗?
一个稍微复杂一点的激励例子:
from collections import namedtuple
class StateDatabase:
State = namedtuple('State', ['name', 'capital'])
db = [State(*args) for args in [
['Alabama', 'Montgomery'],
['Alaska', 'Juneau'],
# ...
]]
在这个例子中,
apply()
本来是个不错的解决方案,但不幸的是,它已经从python 3中删除了。