Jan Eden wrote:
>>I'd like to form a list of class instances. The following does not work 
>>(TextfieldLong, Textarea, TextfieldShort etc being class names):
>>
>>   fields = [
>>       TextfieldLong(name='title', label='Seitentitel', value=''),
>>       Textarea(name='content', label='Inhalt', value=''),
>>       ShortField(name='mother_id', label='MotherID', value=1)
>>   ]
>>   
> 
> 
> Just found that it *does* work, but that I have to define the classes above 
> the list assignment. Why is that? Why would Python not find the classes 
> within the same file?

Class definitions are executable statements that bind the name of the class to 
a class object. Before the definition is executed the class is undefined, like 
any other assignment. For example you wouldn't expect this to work:

values = [x, y, z]
x=1
y=2
z=3

Your code suffers from the same problem. When you say
class foo:
  pass

this means, roughly,
foo = (the result of executing the class body)
and the name 'foo' is not defined until this executes.

Kent

_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to