似乎Python不可变类的__init__
方法毫无意义,因为在创建对象之后,不允许进行属性赋值。但很明显,__init__
方法确实存在于不可变对象中。它是如何实现的?它有空方法体吗?
答案 0 :(得分:2)
__init__
什么都不做,只是继承自object
。所有工作都在__new__
完成。
In [1]: float.__init__
Out[1]: <slot wrapper '__init__' of 'object' objects>
In [2]: float.__new__
Out[2]: <function float.__new__>
float
类tp_new
的定义为float_new
,可以看到here。