我希望包装器my_function能够接收类或类实例,而不是编写两个不同的函数:

>>> from module import MyClass

>>> my_function(MyClass)

True

>>> cls_inst = MyClass()

>>> my_function(cls_inst)

True

问题是我事先并不知道我将接收哪种类或类实例。所以我不能,例如,使用像isinstance ...

这样的函数

如何以通用方式键入检查param是否包含类或类实例?

有什么想法吗?

有帮助吗?

解决方案

>>> 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函数。

E.g:

import avahi
print type(avahi)

<type 'module'>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top