[Python-ideas] PEP 560 (second post)

Ivan Levkivskyi levkivskyi at gmail.com
Fri Nov 10 15:26:36 EST 2017


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

> On Fri, Nov 10, 2017 at 8:33 PM, Ivan Levkivskyi <levkivskyi at gmail.com>
> wrote:
>
>> 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,)
>>
>
> ​Why is List[int] not allowed to be the base? Neither method-lookup
> performance nor the metaclass conflict issue seem to depend on whether
> List[int] is in __bases__.
>
>
The situation is actually quite opposite. Interestingly, the whole
discussion started from Mark Shannon pointing to these problems with
List[int] at the Language Summit.
The original discussion on typing tracker is referenced in the PEP draft.

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


More information about the Python-ideas mailing list