相关疑难解决方法(0)

类属性评估和生成器

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)

python attributes class class-attributes

15
推荐指数
1
解决办法
935
查看次数

标签 统计

attributes ×1

class ×1

class-attributes ×1

python ×1