[Python-ideas] PEP 560 (second post)

Ivan Levkivskyi levkivskyi at gmail.com
Fri Nov 10 13:33:08 EST 2017


On 10 November 2017 at 18:39, Koos Zevenhoven <k7hoven at gmail.com> wrote:

> On Wed, Sep 27, 2017 at 12:28 PM, Ivan Levkivskyi <levkivskyi at gmail.com>
> wrote:
>
>>>>
>>> After creating the class,
>> the original bases are saved in ``__orig_bases__`` (currently this is also
>> done by the metaclass).
>>
>>
> ​Those are *still* bases, right, even if they are not in the mro?​ I'm not
> sure if this is a naming thing or something even more.
>

The objects that have __subclass_base__ method (proposed to rename to
__mro_entry__)
are removed from __bases__ attributed of the newly created class. Otherwise
they may cause a metaclass conflict.
One can however still call them syntactic (or static?) bases. For example
this is how it is going to be used by typing:

    from typing import List

    class Tokens(List[int]):
        ...

    assert Tokens.__bases__ == (list,)


> NOTE: These two method names are reserved for exclusive use by
>> the ``typing`` module and the generic types machinery, and any other use
>> is
>> strongly discouraged.
>>
>
> ​Given the situation, that may be a good thing. But will it really work? I
> think it is also strongly discouraged to invent your own dunder method
> names, but people still do it.​
>

Terry had a similar comment. I will "soften" this formulation in the next
revision of the PEP.

--
Ivan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20171110/f698c884/attachment.html>


More information about the Python-ideas mailing list