我需要获取对象的确切类以引发TypeError并将其打印到控制台上。
def diff(a,b):
retset = []
if not isinstance(a,set) or not isinstance(b,set):
raise TypeError("Unsupported operand type(s) for -: '{}' and '{}'".format(type(a),type(b)))
else:
for item in a:
if not item in b:
retset.append(item)
return set(retset)
如果我传递未设置的参数,例如1个set和1个list,则输出 -:类“ set”和类“ list”的不受支持的操作数类型
而我希望输出为 -:'set'和'list'的不受支持的操作数类型
有没有像type()这样的特定内置函数?
答案 0 :(得分:2)
您可以使用__class__
属性获取对象的实际类,并从中获取__name__
属性。
考虑以下代码:
class Foo:
pass
foo = Foo()
使用上述方法,print(foo.__class__.__name__)
将产生Foo
答案 1 :(得分:1)
使用type(obj).__name__
:
x = object()
print(type(x).__name__)
使用type(obj)
返回对象的类型。所有类型都具有__name__
属性,该属性是代表对象名称的字符串。
注意:使用str(type(obj))
将返回您不期望的内容:
"<class 'object'>"