鱼C论坛

 找回密码
 立即注册
查看: 727|回复: 5

[已解决]小甲鱼作业中这一段代码存在什么区别?

[复制链接]
发表于 2018-8-9 15:30:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼有一段作业代码是这个

class C2F(float):
        "摄氏度转换为华氏度"
        def __new__(cls, arg=0.0):
                return float.__new__(cls, arg * 1.8 + 32)
print(C2F(32))


然而我感觉这样太复杂

class C2F(float):
        "摄氏度转换为华氏度"
        def __new__(cls, arg=0.0):
                return arg * 1.8 + 32
print(C2F(32))

改成这样。
相比之下有什么区别吗?有没有什么弊端。小甲鱼这样写有什么好处吗?
最佳答案
2018-8-9 15:34:02
效果上没有区别(大家都是返回了已经实例化的对象),但是小甲鱼的更加规范。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-9 15:34:02 | 显示全部楼层    本楼为最佳答案   
效果上没有区别(大家都是返回了已经实例化的对象),但是小甲鱼的更加规范。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-9 15:37:05 | 显示全部楼层
刚学到的:
方法一是比较正规的写法
方法二也可以,但如果是继承类的话,将覆盖父类的方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-9 16:43:24 | 显示全部楼层
无符号整形 发表于 2018-8-9 15:34
效果上没有区别(大家都是返回了已经实例化的对象),但是小甲鱼的更加规范。

class C2F(float):
        "摄氏度转换为华氏度"
        def __new__(cls, arg=0.0):
                print('new')
                return arg * 1.8 + 32
        def __init__(self,arg):
                print('init')

C2F(32)


不对 我试了一下  我改的版本返回的不是实例对象,因此无法调用__init__方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-9 16:44:02 | 显示全部楼层
claws0n 发表于 2018-8-9 15:37
刚学到的:
方法一是比较正规的写法
方法二也可以,但如果是继承类的话,将覆盖父类的方法

class C2F(float):
        "摄氏度转换为华氏度"
        def __new__(cls, arg=0.0):
                print('new')
                return arg * 1.8 + 32
        def __init__(self,arg):
                print('init')

C2F(32)


不对 我试了一下  我改的版本返回的不是实例对象,因此无法调用__init__方法
所以感觉差别还是挺大的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-9 16:47:23 | 显示全部楼层
巴达兽 发表于 2018-8-9 16:43
class C2F(float):
        "摄氏度转换为华氏度"
        def __new__(cls, arg=0.0):

对呀,你返回的这个东西时float类型的实例化对象
不是你的类型的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 10:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表