类定义中的python生成器表达式

时间:2018-02-26 18:31:37

标签: python list-comprehension generator-expression

我正在Python 2.7.13中编写一个简单的类,我遇到了一个令人惊讶的错误:

class X(object):
    T = 'test {}'

    A1 = [x for x in T]  # ok
    A2 = tuple([x for x in T])  # ok
    A3 = tuple(x for x in T)  # ok

    B1 = [T.format(x) for x in (1,2)]  # ok
    B2 = tuple([T.format(x) for x in (1,2)])  # ok
    B3 = tuple(T.format(x) for x in (1,2))  # NameError

除了定义B3的行({1}}之外的所有上述工作。

我很好奇为什么那条线是唯一一个出错的线。我一直在写NameError: global name 'T' is not defined,好像它等同于tuple(...),但似乎它们毕竟不一样。

我也检查过,Python 3.4.3在定义tuple([...])B1B2的行上给出了错误,这些行至少看起来更一致。

0 个答案:

没有答案