How do you access other class variables from a list comprehension within the class definition? The following works in Python 2 but fails in Python 3:
class Foo: x = 5 y = [x for i in range(1)]
Python 3.2 gives the error:
NameError: global name 'x' is not defined
Foo.x doesn't work either. Any ideas on how to do this in Python 3?
A slightly more complicated motivating example:
from collections import namedtuple class StateDatabase: State = namedtuple('State', ['name', 'capital']) db = [State(*args) for args in [ ['Alabama', 'Montgomery'], ['Alaska', 'Juneau'], # ... ]]
In this example,
apply() would have been a decent workaround, but it is sadly removed from Python 3.