Python中类型的字符串表示形式

时间:2019-09-03 15:27:30

标签: python

我希望在eval语句中使用类型函数,因此我只需要该函数的字符串表示形式。例如:

print(type("cow"))
<class 'str'>

在这里我需要它来输出'str'。但是当我尝试:

type("cow").__str__()
TypeError: descriptor '__str__' of 'str' object needs an argument
type("cow").__repr__()
TypeError: descriptor '__repr__' of 'str' object needs an argument

奇怪的是,如果Jupyter笔记本是单元格中的最后一行,则可以正确打印。

为什么会发生此错误?仅获取Type字符串的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

也许你想要

type("cow").__name__

答案 1 :(得分:2)

鉴于问题模棱两可,print(type("cow"))有点误导。是

  • 字符串 “牛”
  • 名为 cow 的变量(在这种情况下,碰巧是一个字符串)

无论如何,这是一种适用于两者的方式:

>>> cow = "Moo!!"
>>>
>>> # Variable
...
>>> cow.__class__.__name__
'str'
>>> # String literal
...
>>> "cow".__class__.__name__
'str'

有关更多详细信息,请选中[Python 3.Docs]: Built-in Types - Special Attributes