Python如何评估类属性?我偶然发现了一个有趣的怪癖(在Python 2.5.2中),我想解释一下.
我有一个类,其中一些属性是根据其他先前定义的属性定义的.当我尝试使用生成器对象时,Python会抛出错误,但如果我使用普通的普通列表解析,那就没问题了.
这是精简的例子.请注意,唯一的区别是Brie使用生成器表达式,同时Cheddar使用列表推导.
# Using a generator expression as the argument to list() fails
>>> class Brie :
... base = 2
... powers = list(base**i for i in xrange(5))
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in Brie
File "<stdin>", line 3, in <genexpr>
NameError: global name 'base' is not defined
# Using a list comprehension works
>>> class Cheddar :
... base = 2 …Run Code Online (Sandbox Code Playgroud)