python中的变量类型检测

我正在研究在
python(2.5)中检测变量类型(列表与字符串)的方法,并且遇到了一些似乎过于复杂的其他答案.

我发现一个人可以做到

x.__class__.__name__

获取包含类名的字符串.什么,如果有的话,这是错的?它不便携吗?什么时候会失败?

最佳答案 问题是不同的类可以具有相同的名称.

直接的示例是针对在不同模块中定义的类(例如,考虑通用名称,例如Node或Connection).

但是,即使在单个模块中也很容易证明这个问题:

class A(object): pass
B = A
class A(object): pass
C = A

b = B()
c = C()
b.__class__.__name__ == c.__class__.__name__
=> True
type(b) == type(c)
=> False

如果您不必具有该类的字符串表示,只需使用通过调用type(obj)返回的类型对象.

当然,根据您使用它的方式,最好使用isinstance而不是直接处理类型对象.

点赞