call of non-function (type string) error

Paul Prescod paulp at ActiveState.com
Wed Apr 11 13:49:41 EDT 2001


Graham Guttocks wrote:
> 
> ...
> >>> CIPHER = "DES3"
> >>> import Crypto.Cipher
> >>> cipher = getattr(Crypto.Cipher, CIPHER)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> AttributeError: DES3

As Andrew pointed out this is an annoying corner case where you probably
do have to use exec. I'm not really thrilled with all of these corner
cases in Python's package handling. 

On the other hand, once you have the module object you can use getattr
to get the "new" function out of the module. 

-- 
Take a recipe. Leave a recipe.  
Python Cookbook!  http://www.ActiveState.com/pythoncookbook




More information about the Python-list mailing list