我有一个变量列表。列表中有字符串、数字和类对象。我需要根据每种不同类型的数据执行逻辑。那时我在检测类对象和分支我的逻辑时遇到问题。
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”。 (或者元类的名称,如果有的话。)
