[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)
'__builtin__.generator'
>>> qual(types.FunctionType)
'__builtin__.function'
>>> qual(types.MethodType)
'__builtin__.instancemethod'
>>> qual(types.NoneType)
'__builtin__.NoneType'
>>> qual(types.GeneratorType)
'__builtin__.generator'
>>> __builtin__.generator
AttributeError: 'module' object has no attribute 'generator'
[[[etc.]]]
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?
James
More information about the Python-Dev
mailing list