我希望包装器my_function能够接收类或类实例,而不是编写两个不同的函数:
>>> from module import MyClass
>>> my_function(MyClass)
True
>>> cls_inst = MyClass()
>>> my_function(cls_inst)
True
问题是我事先并不知道我将接收哪种类或类实例。所以我不能,例如,使用像isinstance ...
这样的函数如何以通用方式键入检查param是否包含类或类实例?
有什么想法吗?
答案 0 :(得分:7)
>>> class A: pass
>>> isinstance(A, type)
True
>>> isinstance(A(), type)
False
答案 1 :(得分:1)
import types
def myfun(maybe_class):
if type(maybe_class) == types.ClassType:
print "It's a class."
else:
print "It's an instance."
答案 2 :(得分:0)
使用type()buitlin函数。
E.g:
import avahi
print type(avahi)
<type 'module'>