Учитывая 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