Uzyskiwanie dostępu do zmiennych klas z rozumienia listy w definicji klasy
Jak uzyskać dostęp do innych zmiennych klasy z rozumienia listy w definicji klasy? Poniższe działa w Pythonie 2, ale nie działa w Pythonie 3:
class Foo:
x = 5
y = [x for i in range(1)]
Python 3.2 podaje błąd:
NameError: global name 'x' is not defined
PróbowaćFoo.x
też nie działa. Jakieś pomysły, jak to zrobić w Pythonie 3?
Nieco bardziej skomplikowany przykład motywacyjny:
from collections import namedtuple
class StateDatabase:
State = namedtuple('State', ['name', 'capital'])
db = [State(*args) for args in [
['Alabama', 'Montgomery'],
['Alaska', 'Juneau'],
# ...
]]
W tym przykładzieapply()
byłoby godnym obejściem, ale niestety zostało usunięte z Pythona 3.