Accediendo a las variables de clase desde una lista de comprensión en la definición de clase.

¿Cómo accede a otras variables de clase desde una lista de comprensión dentro de la definición de clase? Lo siguiente funciona en Python 2, pero falla en Python 3:

class Foo:
    x = 5
    y = [x for i in range(1)]

Python 3.2 da el error:

NameError: global name 'x' is not defined

MolestoFoo.x Tampoco funciona. ¿Alguna idea sobre cómo hacer esto en Python 3?

Un ejemplo de motivación un poco más complicado:

from collections import namedtuple
class StateDatabase:
    State = namedtuple('State', ['name', 'capital'])
    db = [State(*args) for args in [
        ['Alabama', 'Montgomery'],
        ['Alaska', 'Juneau'],
        # ...
    ]]

En este ejemplo,apply() habría sido una solución decente, pero lamentablemente se eliminó de Python 3.

Respuestas a la pregunta(5)

Su respuesta a la pregunta