On 10 November 2017 at 21:19, Koos Zevenhoven <firstname.lastname@example.org> wrote:On Fri, Nov 10, 2017 at 8:33 PM, Ivan Levkivskyi <email@example.com> wrote:On 10 November 2017 at 18:39, Koos Zevenhoven <firstname.lastname@example.org> wrote:On Wed, Sep 27, 2017 at 12:28 PM, Ivan Levkivskyi <email@example.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 Listclass 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.