我的印象是str(5)
之类的内容正在整数str
上调用5
函数。但是当您在解释器中输入str
时:
>>> str
<class 'str'>
所以str
实际上是一个类,这使得像if type(a) is str
这样的代码更有意义。但是为什么str
列在&#34;内置函数&#34;在文档中?这只是一个简化吗?
答案 0 :(得分:10)
将其列为函数是一种简化,是的。但请记住,类是可调用的* - 这就是你如何创建类的实例!
如果它对您有所帮助,请将str(5)
视为构建来自数字5
的字符串。
请注意,所有其他内置类型都采用相同的方式:int()
,float()
,str()
,tuple()
,list()
,{{ 1}},set()
...他们都是所有类,但是可以调用它们来构造类的实例,并且如果它是&#39;它通常会接受另一个类型的实例作为参数。适用。
*:至少,大部分时间。
答案 1 :(得分:1)
str(5)
实际上是在str类上调用__call__()
函数:
>>> str(5)
'5'
>>> str.__call__(5)
'5'
所以是的,str表现为一个函数以及一个类(或2.7之前的版本中的类型)
答案 2 :(得分:0)
我认为查看它的简单方法是str()返回str类的实例。