Я пытаюсь выяснить, эквивалентны ли два класса, игнорируя параметры типов. Скажи, что у меня есть
from typing import Generic, TypeVar
T = TypeVar('T')
class A(Generic[T]):
pass
class B(Generic[T], A[T]):
pass
class X:
pass
Я бы хотел, чтобы каждая следующая строка была эквивалентна
Generic, Generic[T]
A, A[T], A[str], A[int]
B, B[T], B[str], B[int]
X
Ни одна из is
, ==
, isinstance
, type
или __class__
не работает. Сравнение __name__
хрупко с тем, кто определяет другой класс с таким же именем.
Для бонусных баллов * мне также будет интересен дополнительный способ проверки эквивалентности
A, A[T], A[str], A[int], B, B[T], B[str], B[int]
* не щедрость, нет: p
(Контекст таков, что я хотел бы найти все подклассы класса, отличного от Generic
)