hhhhhhy 发表于 2020-8-1 09:35:07

041作业1:__new__的使用问题

第041讲的作业:

#041 作业1
class C2F:
    def __new__(self,num):
      return num*1.8+32
print(C2F(32))

请问我这样写有什么问题?它也能输出正确的数字。

zltzlt 发表于 2020-8-1 09:35:32

本帖最后由 zltzlt 于 2020-8-1 09:39 编辑

可以打印一下它的 type:

>>> class C2F:
    def __new__(self,num):
      return num*1.8+32

>>> type(C2F(5))
<class 'float'>

可以看到这是 float 的实例

可以参考:https://fishc.com.cn/thread-143550-1-1.html

Twilight6 发表于 2020-8-1 09:36:25



这样写的话导致返回的实例就不是 C2F 的实力对象,而是 float 的实例对象了

因为 __new__ 返回值是将实例对象返回给__init__ 的,而你返回了个 float 值,那么这个实例就变成了 float 的实例对象,而不是 C2F

永恒的蓝色梦想 发表于 2020-8-1 09:39:30

Twilight6 发表于 2020-8-1 09:36
这样写的话导致返回的实例就不是 C2F 的实力对象,而是 float 的实例对象了

因为 __new__ 返回值是 ...

错字

Twilight6 发表于 2020-8-1 09:41:44

永恒的蓝色梦想 发表于 2020-8-1 09:39
错字

{:10_297:} 哈哈哈哈嘘
页: [1]
查看完整版本: 041作业1:__new__的使用问题