2014-01-10 3 views
0

Документация Python гласит, что для isinstance требуется экземпляр объекта класса и информации о классе. Проблема заключается в том: я просто 2 класса объект информации и должны проверить, если class_inf1 является экземпляром class_inf2Python - isinstance (classInfo, classInfo)

Пример:

class Foo(object): 
    pass 

class Bar(Foo): 
    pass 

# It should check if Bar is a instance of Foo. Bar can either be one of many subclasses or 
# the same class. 
isinstance(Bar, Foo) 

# i.e.: the function I'm looking for should be working as if Bar was an object: 
isinstance(Bar(), Foo) 

В моем более сложного кода, я не могу знать, что Бар потому что это переменная. Я не могу инициализировать его, потому что я не знаю, какие параметры он принимает, и он может сделать некоторые неприятные вещи. (И мне никогда не понадобится инициализировать эту переменную, потому что это своего рода тест).

+0

Нет объектов "информация о классе". Сам класс является объектом, и это те объекты класса, с которыми вы имеете дело. Освободите свой разум от этих Java-измов :-) – delnan

ответ

6

Ваша терминология довольно смущена, но я полагаю, что вы хотите проверить, наследует ли один класс от другого. Это достигается с помощью issubclass builtin:

class B(object): 
    pass 

class D(B): 
    pass 

print issubclass(B, object) 
print issubclass(D, B) # true 
# order matters: 
print issubclass(B, D) # false 
# it's transitive: 
print issubclass(D, object) 
# a class is a subclass of itself: 
print issubclass(B, B) # true 
+0

У вас все получилось. Я искал 'issubclass'. (Я отвечу на ваш ответ через 10 минут, как только Stackoverflow позволит мне это сделать). – Matt3o12

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