Zugriff auf Klassenvariablen aus einem Listenverständnis in der Klassendefinition

Wie kann man aus einem Listenverständnis innerhalb der Klassendefinition auf andere Klassenvariablen zugreifen? Folgendes funktioniert in Python 2, schlägt jedoch in Python 3 fehl:

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

Python 3.2 gibt den Fehler aus:

NameError: global name 'x' is not defined

VersuchenFoo.x funktioniert auch nicht. Irgendwelche Ideen dazu in Python 3?

Ein etwas komplizierteres Motivationsbeispiel:

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

In diesem Beispielapply() wäre eine anständige Umgehung gewesen, aber es ist leider aus Python 3 entfernt.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage