python类的构造函数是int_python中的int('123')是函数调用还是'int'类的构造函数调用?...

是的int是一个类(也称为类型;请参见Python : terminology 'class' VS 'type'),执行int('123')将返回int对象的实例。在

但是,(在标准的Python中,也就是CPython)对于小整数(范围在-5到256之间),构造函数实际上并没有构建新的integer对象。为了提高效率,解释器有一个小整数的缓存,构造函数只返回对现有int对象的引用。这个主题在“is” operator behaves unexpectedly with integers的答案中讨论。在

你的书叫int()“the int方法”有点草率,IMHO。从学究的角度讲,int本身就是一个类,它是一个可调用的对象,当您调用一个类时,该类的调用会自动转换为对该类的构造函数方法(即其__new__方法)的调用。但是非正式地,通常将int()称为函数调用或方法调用。在

我差点忘了你第一段中的问题。当我们写作的时候[1, 2, 3]

解释器创建3int对象,并将它们放入一个新的list实例中。(更准确地说,它将对int对象的引用放入列表中)。在

使用标准^{} module可以反汇编此操作的字节码:

^{pr2}$

输出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)

输出built-in method lower of str object at 0xb72e7880>

向我们展示了文本字符串'hello'具有标准的lower()方法。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值