Учитывая PEP 560, почему универсальные типы все еще используют метакласс в Python 3.7? - PullRequest
2 голосов
/ 19 марта 2019

Учитывая PEP 560 , почему универсальные типы все еще используют метакласс в Python?

In [8]: from typing import Generic, TypeVar

In [10]: type(Generic[T])  

Out[10]: typing._GenericAlias

In [11]: type(Generic[T]).__mro__   

Out[11]: (typing._GenericAlias, typing._Final, object)

Моя проблема заключается в том, что я хочу определить подкласс набора:

T = TypeVar('T')


class Selection(abc.MutableSet, MutableSet[T], QObject):
    """
    A MutableSet that emits QEvents
    """

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.selection: Set[T] = set()

но я получаю ошибку:

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
...