[Python-Dev] type.__subclasses__() doesn't work
Peter Otten
__peter__ at web.de
Wed Oct 9 14:22:29 CEST 2013
Steven D'Aprano wrote:
> On Wed, Oct 09, 2013 at 12:20:18PM +0200, Antoine Pitrou wrote:
>>
>> Hello,
>>
>> Just noticed the following quirk:
>>
>> >>> type.__subclasses__()
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> TypeError: descriptor '__subclasses__' of 'type' object needs an argument
>>
>> Yet it would be nice to know about the subclasses of type.
>
> py> type.__subclasses__(type)
> [<class 'abc.ABCMeta'>, <class 'string._TemplateMetaclass'>]
The underlying problem seems to be that there is no helper function to
bypass the instance attribute. Compare:
>>> class T(type):
... def __len__(self): return 0
...
>>> class A(metaclass=T):
... def __len__(self): return 1
...
>>> A.__len__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __len__() missing 1 required positional argument: 'self'
>>> len(A)
0
So should there be a subclasses() function, in the operator module perhaps?
More information about the Python-Dev
mailing list