[Python-Dev] Classes that claim to be defined in __builtin__ but aren't

James Y Knight foom at fuhm.net
Tue Aug 10 00:14:12 CEST 2004

There's a fair number of classes that claim they are defined in 
__builtin__, but do not actually appear there. For example:

 >>> def qual(clazz):
...     return clazz.__module__ + '.' + clazz.__name__
 >>> qual(types.GeneratorType)
 >>> qual(types.FunctionType)
 >>> qual(types.MethodType)
 >>> qual(types.NoneType)
 >>> qual(types.GeneratorType)
 >>> __builtin__.generator
AttributeError: 'module' object has no attribute 'generator'

IMO classes ought to actually appear in __builtin__ if they claim they 
are defined there. Doing otherwise breaks reflection, as you have to 
add a special case for these class names to use the appropriate object 
from the types module instead. Thoughts? If it isn't desirable to have 
these names appear in __builtin__, perhaps their '__module__' should be 
changed to another module where they are defined?


More information about the Python-Dev mailing list