[Python-Dev] __subclasses__() return order

Antoine Pitrou solipsis at pitrou.net
Sat May 25 15:45:25 CEST 2013


On Sat, 25 May 2013 15:26:58 +0200
Antoine Pitrou <solipsis at pitrou.net> wrote:

> On Sat, 25 May 2013 06:23:56 -0700
> Eli Bendersky <eliben at gmail.com> wrote:
> > On Sat, May 25, 2013 at 6:18 AM, Antoine Pitrou <solipsis at pitrou.net> wrote:
> > 
> > >
> > > Hello,
> > >
> > > In http://bugs.python.org/issue17936, I proposed making tp_subclasses
> > > (the internal container implementing object.__subclasses__) a dict.
> > > This would make the return order of __subclasses__ completely
> > > undefined, while it is right now slightly predictable. I have never seen
> > > __subclasses__ actually used in production code, so I'm wondering
> > > whether someone might be affected by such a change.
> > >
> > > Regards
> > >
> > 
> > Personally I never used it, but it's now explicitly documented as returning
> > a list. Not sure what's the right thing to do here, but perhaps returning
> > an OrderedDict can eliminate the order problem?
> 
> It would still return a list.

I guess I should explain myself more clearly: __subclasses__() already
computes its result on-the-fly (it must weed out dead weakrefs) (*). So
the visible behaviour of __subclasses__ wouldn't change, except for
ordering.

(*)

>>> object.__subclasses__() is object.__subclasses__()
False


Regards

Antoine.




More information about the Python-Dev mailing list