Skip to main content
 首页 » 编程设计

python之如何判断 python 变量中的数据类型

2025年05月04日15kevingrace

我有一个变量列表。列表中有字符串、数字和类对象。我需要根据每种不同类型的数据执行逻辑。那时我在检测类对象和分支我的逻辑时遇到问题。

if(type(lists[listname][0]).__name__ == 'str'): # <--- this works for strings 
elif(type(lists[listname][0]).__name__ == 'object'): <--- this does not work for classes 

在上面的第二行代码中,name 变量包含“Address”作为类名。我希望它包含“类”或“对象”,以便我可以分支我的程序。将来我会有很多不同类型的对象,所以对每个不同的类名、“地址”、“人”等执行逻辑有点不切实际

如果我的问题需要澄清,请告诉我。

谢谢!!

请您参考如下方法:

仅供引用:它是否是新型类也会有所不同:

# python 
type(1).__name__ 
'int' 
type('1').__name__ 
'str' 
class foo(object): 
  pass 
type(foo()).__name__ 
'foo' 
class bar: 
  pass 
type(bar()).__name__ 
'instance' 

如果你能确定它们都是新式类,你的方法将确定真正的类型。如果您将它们设为旧式,它将显示为“实例”。并不是说我只是为了这个而建议让所有东西都采用旧式。

但是,您可以更进一步:

type(bar().__class__).__name__ 
'classobj' 
type(foo().__class__).__name__ 
'type' 

并且始终寻找“classobj”或“type”。 (或者元类的名称,如果有的话。)