8
class a:
pass
class b(a):
pass
c = b()
type(c) == a #returns False
Есть ли альтернатива типу(), который может проверить, наследует ли объект от класса?получить базовый класс в python
class a:
pass
class b(a):
pass
c = b()
type(c) == a #returns False
Есть ли альтернатива типу(), который может проверить, наследует ли объект от класса?получить базовый класс в python
Да, isinstance: isinstance(obj, Klass)
>>> class a:
... pass
...
>>> class b(a):
... pass
...
>>> c = b()
>>> d = a()
>>> type(c) == type(d)
True
типа() возвращает объект типа. a - это фактический класс, а не тип
Ваш ответ, кажется, противоречит тому, что говорит OP в своем вопросе!? Я только начинаю идти на проверку типов, поэтому меня интересуют любые комментарии. Вы уверены, что тип (c) == type (d)? –
Оба типа (c) 'и' type (d) 'возвращают тип экземпляра класса, поэтому они должны быть равны. Я думаю, мы должны использовать 'isinstance' здесь. Вы можете подтвердить это, создав 'class x: pass' и' z = x() ', нет никакого наследования между' class x' и 'class a', но вы все равно найдете' type (z) == type (c) 'возвращает значение True. – smwikipedia
Вышеупомянутое предназначено для Python 2.7.8. В Python 3.4.1 типы type (c) 'и' type (d) 'будут возвращать' class 'type', что также приведет к результату True. Но он не говорит, что 'c' и' d' имеют один и тот же тип. – smwikipedia