type.__subclasses__() doesn't work
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. Regards Antoine.
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)
[
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) [
, ]
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?
On 10/09/2013 02:22 PM, Peter Otten wrote:
py> type.__subclasses__(type) [
, ] The underlying problem seems to be that there is no helper function to bypass the instance attribute.
Note that the problem is specific to the "type" type, which is its own metatype. With other types that get __subclasses__ from type, is no problem with just calling __subclasses__():
int.__subclasses__() [
]
participants (4)
-
Antoine Pitrou
-
Hrvoje Niksic
-
Peter Otten
-
Steven D'Aprano