Peculiar Behaviour of __builtins__

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Thu May 12 21:59:24 EDT 2011


En Thu, 12 May 2011 20:29:57 -0300, Aman Nijhawan <amannijhawan at gmail.com>  
escribió:

> I was trying to call the builtin function min by using
> getattr(__builtins__,'min')
>
> This works at the interpretter prompt
>
> However when I called it inside a module that was imported by another  
> module
> it fails and gives an attribute error

__builtins__ (note the final 's') is an implementation detail. You want  
the __builtin__ (no 's') module, renamed 'builtin' in Python 3.x

py> import __builtin__
py> builtin_min = __builtin__.min
py> builtin_min([8,2,5])
2

See http://docs.python.org/library/__builtin__.html

Note: using getattr with a literal name is not so useful. Better to use  
dot notation.


-- 
Gabriel Genellina




More information about the Python-list mailing list