2013-09-12 3 views
1

Я создал 2 класса A & B, B наследует A. Я использую isinstance, чтобы проверить, является ли b типа a, и возвращает false. Не должно быть правдой?Оператор isinstance, возвращающий false на наследование

class a():pass 

class b(a):pass 

print isinstance(b,a) 
+0

Возможный дубликат [В чем разница между старым стилем и новыми классами стиля в Python?] (Https://stackoverflow.com/questions/54867/what- is-the-difference-from-old-style-and-new-style-classes-in-python) –

ответ

5

No. b является экземпляром либо type или classobj, не из a. Вместо этого вы можете выбрать the issubclass function.

>>> issubclass(b, a) 
True 
0

b является классом, а не объектом, поэтому он не является экземпляром какого-либо класса. Чтобы получить правду, вызовите isinstance (b(), a)

+0

Это фактически экземпляр одного из двух классов. Но это не экземпляр 'a'. –

Смежные вопросы