如何获得一个对象的类?

时间:2018-12-31 16:10:10

标签: python

我需要获取对象的确切类以引发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()这样的特定内置函数?

2 个答案:

答案 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'>"