Регистрация подкласса для класса AB C внутри __init_subclass__ не полностью работает - PullRequest
1 голос
/ 08 января 2020

Чего я хочу добиться - это зарегистрировать один тип как подтип всех других типов. По какой-то другой причине я не могу использовать метакласс, поэтому __init_subclass__ кажется разумным выбором.

У меня есть такой код

from abc import ABC


class AnyData(ABC):
    pass

class BaseData(ABC):
    def __init_subclass__(cls, **kwargs):
        super().__init_subclass__(**kwargs)
        cls.register(AnyData)

class DataA(BaseData):
    pass

Однако issubclass(AnyData, DataA) возвращает False, пока DataA находится в подклассах, как

class DataB(DataA):
    pass

Теперь issubclass(AnyData, DataA) возвращает True и issubclass(AnyData, DataB) возвращает False

Пожалуйста, помогите выявить причину, по которой он ведет себя так

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...