[Tutor] AttributeError: instance has no __call__ method
Juan Shen
orion_val at 163.com
Thu Dec 16 12:23:34 CET 2004
Juan Shen wrote:
> Marc Gartler wrote:
>
>> Hi everybody,
>>
>> Prior to this chunk of code 'glass' has been chosen from a list of
>> colors via user input, and I now want to have that choice connect to
>> one of several possible classes:
>>
>> def glass_type(glasstype):
>> if glasstype == 'Red':
>> myglass = RedGlassCost()
>> elif glasstype == 'Blue':
>> myglass = BlueGlassCost()
>> elif glasstype == 'Yellow':
>> myglass = YellowGlassCost()
>> return myglass
>>
>> glasschoice = glass_type(glass)
>> myglass = glasschoice()
>>
>>
>> I've tried various approaches and keep getting different errors. But
>> this one seems closest to my goal, as I know it is at least passing
>> 'glass' into the function:
>>
>> AttributeError: RedGlassCost instance has no __call__ method
>>
>> What is this trying to tell me? Or is that irrelevant as I would be
>> better off trying some other approach altogether?
>>
>> _______________________________________________
>> Tutor maillist - Tutor at python.org
>> http://mail.python.org/mailman/listinfo/tutor
>>
>>
> I have guessed your meaning by that code. Try the following:
>
> glasstype={\
> 'Red':RedGlassCost,\
> 'Blue':BlueGlassCost,\
> 'Yellow':YellowGlassCost}
> # RedGlassCost ... are types.FunctionType
> myglass=glasstype[glass]()
>
BTW, if RedGlassCost is types.ClassType, my code also sounds.
Juan Shen
More information about the Tutor
mailing list