Acessando variáveis de classe a partir de uma compreensão de lista na definição de classe
Como você acessa outras variáveis de classe a partir de uma compreensão de lista dentro da definição de classe? O seguinte funciona no Python 2, mas falha no Python 3:
class Foo:
x = 5
y = [x for i in range(1)]
O Python 3.2 fornece o erro:
NameError: global name 'x' is not defined
TentandoFoo.x
não funciona também. Alguma idéia de como fazer isso no Python 3?
Um exemplo motivador um pouco mais complicado:
from collections import namedtuple
class StateDatabase:
State = namedtuple('State', ['name', 'capital'])
db = [State(*args) for args in [
['Alabama', 'Montgomery'],
['Alaska', 'Juneau'],
# ...
]]
Neste exemplo,apply()
teria sido uma solução decente, mas infelizmente foi removida do Python 3.