如何获得具体的类名作为字符串?

我想避免调用大量的 isinstance()函数,所以我正在寻找一种方法来获得一个实例变量的具体类名作为字符串。

有什么想法吗?

142470 次浏览
 instance.__class__.__name__

例如:

>>> class A():
pass
>>> a = A()
>>> a.__class__.__name__
'A'
<object>.__class__.__name__

您还可以创建一个用类本身作为键的 dict,而不一定是类名

typefunc={
int:lambda x: x*2,
str:lambda s:'(*(%s)*)'%s
}


def transform (param):
print typefunc[type(param)](param)


transform (1)
>>> 2
transform ("hi")
>>> (*(hi)*)

这里的 typefunc是映射每种类型的函数的结构图。transform获取该函数并将其应用于参数。

当然,使用“真正的”OOP 要好得多