python:如何将具体类名作为字符串获取?

本问题已经有最佳答案,请猛点这里访问。

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

什么好主意吗?


1
 instance.__class__.__name__

例子:

1
2
3
4
5
>>> class A():
    pass
>>> a = A()
>>> a.__class__.__name__
'A'


1
<object>.__class__.__name__


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

1
2
3
4
5
6
7
8
9
10
11
12
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是一个dict,它映射每个类型的函数。transform获取该函数并将其应用于参数。

当然,使用"真正的"OOP会更好