我想避免调用很多isinstance()
函数,所以我正在寻找一种方法来将实例变量的具体类名称作为字符串。
有什么想法吗?
答案 0 :(得分:159)
instance.__class__.__name__
示例:
>>> class A():
pass
>>> a = A()
>>> a.__class__.__name__
'A'
答案 1 :(得分:13)
<object>.__class__.__name__
答案 2 :(得分:8)
你也可以用类本身作为键创建一个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
是一个dict,它为每种类型映射一个函数。 transform
获取该函数并将其应用于参数。
当然,使用'真正的'OOP
会好得多