我理解当我这样做时:
>>> int(4.0)
>>> int('10')
将调用参数类中的__init__()
方法(在示例中,分别为float
和str
)。
我想知道如果我做int()
会发生什么,我的意思是,没有任何争论。它不会从类__int__()
调用NoneType
,因为它没有实现该方法。
会发生什么?
另外,这是否意味着如果参数是int
,我只能直接调用类int
的构造函数?
谢谢,
答案 0 :(得分:1)
在python everything is an object中,所以当你打电话:
x = int(y)
然后调用构造函数int.__new__(cls, value=y)
。
返回一个int对象并将其分配给x
。
x
可能有一个绑定到它的方法:x.__init__()
在创建后控制它的设置,但首先创建对象由方法__new__()
处理基类。
如果您没有为int()
提供任何值,则构造函数调用的默认值为:
int.__new__(int, value=0)
已被替换。然后如您所述,int
没有__init__
方法在创建后修改它的设置..