есть ли способ проверить, содержит ли параметр класс или экземпляр класса?
-
08-07-2019 - |
Вопрос
Я хочу, чтобы оболочка my_function могла получать либо класс, либо экземпляр класса, вместо того чтобы писать две разные функции:
>>> from module import MyClass
>>> my_function(MyClass)
True
>>> cls_inst = MyClass()
>>> my_function(cls_inst)
True
проблема в том, что я не знаю заранее, какой тип классов или экземпляров класса я собираюсь получить.Поэтому я не могу, например, использовать такие функции, как isinstance...
Как я могу ввести проверку, содержит ли параметр класс или экземпляр класса, общим способом?
Есть какие-нибудь идеи?
Решение
>>> class A: pass
>>> isinstance(A, type)
True
>>> isinstance(A(), type)
False
Другие советы
import types
def myfun(maybe_class):
if type(maybe_class) == types.ClassType:
print "It's a class."
else:
print "It's an instance."
Используйте функцию type() buitlin.
Например.:
import avahi
print type(avahi)
<type 'module'>
Не связан с StackOverflow