[Python-Dev] Classes that claim to be defined in __builtin__
but aren't
Jim Fulton
jim at zope.com
Tue Aug 10 00:16:53 CEST 2004
James Y Knight wrote:
> 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?
I agree.
> 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?
+1
Jim
--
Jim Fulton mailto:jim at zope.com Python Powered!
CTO (540) 361-1714 http://www.python.org
Zope Corporation http://www.zope.com http://www.zope.org
More information about the Python-Dev
mailing list