Yes int
是一个类(也称为类型;请参阅Python:术语“类”VS“类型”),并做int('123')
返回一个实例int
目的。
然而,(在标准 Python 中,又称为 CPython)对于小整数(在 -5 到 256 范围内,包括)int
构造函数实际上并不构建一个新的整数对象。出于效率原因,解释器有一个小整数的缓存,构造函数只是返回对现有整数的引用int
目的。该主题在以下问题的答案中讨论“is”运算符对整数的行为异常.
你的书呼唤int()
"the int
方法”有点草率,恕我直言。迂腐地说,int
它本身是一个类,它是一个可调用对象,当您调用一个类时,该调用会自动转换为对该类的构造函数方法(即它的构造函数)的调用__new__
方法)。但非正式地,通常指的是int()
作为函数调用或方法调用。
我差点忘了你第一段中的问题。当我们写的时候
[1, 2, 3]
解释器创建 3int
物体并将它们放入新鲜的list
实例。 (更准确地说,它提出参考 to the int
对象到列表中)。
使用标准dis module您可以反汇编此操作的字节码:
from dis import dis
dis('a=[1,2,3]')
output
1 0 LOAD_CONST 0 (1)
3 LOAD_CONST 1 (2)
6 LOAD_CONST 2 (3)
9 BUILD_LIST 3
12 STORE_NAME 0 (a)
15 LOAD_CONST 3 (None)
18 RETURN_VALUE
因此,即使我们“只是”创建一个文字列表,它仍然是一个成熟的列表list
实例对象。与某些 OOP 语言不同,Python 没有任何不是对象的“原始”数据类型,因此文字整数和文字字符串也是对象。因此,文字字符串配备了所有标准字符串方法。例如,
print('hello'.lower)
output
built-in method lower of str object at 0xb72e7880>
向我们展示了文字字符串'hello'
有标准lower()
方法。