魔法方法之这到底是什么牛马情况。。。
所以new传给init 的参数,在半路被截胡了?换成了原本的32??? __new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例对象,是个静态方法。__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值,通常用在初始化一个类实例的时候。是一个实例方法。
new返回了一个实例对象,so,init 接受的也是一个示例对象,你看self和 x那个比较像 实例对象 ,可以尝试打印self看看
__new__只会传一个对象实例给__init__, 参数跟它无关, 你的需求应该这么写
class C2F(float):
def __new__(cls, arg):
arg = arg * 1.8 + 32
self = float.__new__(cls, arg)
self._init__(arg) # 注意少一个下划线
return self
def _init__(self, x):
self.x = x
print(self.x)
页:
[1]