Как проверить класс объекта, наследуемый от определенного абстрактного - PullRequest
2 голосов
/ 01 июня 2019

В Python, когда вы хотите проверить, что объект foo является экземпляром Foo, вы делаете это:

if isinstance(foo, Foo):
    # do something

Теперь представьте, что класс Foo является специализированным классом, унаследованным отBar и что от него наследуется множество других классов: у меня Foo1, Foo2, ..., FooX, которые наследуются от Bar класса.

foo может быть экземпляром любого из этих Foox классов.Что меня интересует, так это то, что foo происходит от класса, который унаследовал один день от Bar.Знаете ли вы простой / канонический способ сделать это?

1 Ответ

1 голос
/ 01 июня 2019

Правильный подход, вероятно, заключается в проверке, является ли foo объектом Bar, который показывает, что Foo унаследовано от Bar.

class Bar:
    pass

class Foo(Bar):
    pass

foo = Foo()

isinstance(foo, Bar)

output:

True

Вы также можете проверить, является ли класс Foo подклассом класса Bar:

issubclass(Foo, Bar)   # notice Foo, the class, not the instance foo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...