|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
原题:
按照以下要求,定义一个类实现摄氏度到华氏度的转换(转换公式:华氏度 = 摄氏度*1.8+32)。要求:我们希望这个类尽量简练地实现功能,如下:
Fish C 的 正确答案:
- class C2F(float):
- "摄氏度转换为华氏度"
- def __new__(cls, arg=0.0):
- return float.__new__(cls, arg * 1.8 + 32)
复制代码
我的尝试:
- class Temperatures():
- def __init__ (self, f, c):
- self.f = f
- self.c = c
-
- def c2f(self):
- return (c*1.8+32)
- def f2c(self):
- return ((f-32)/1.8)
复制代码
问题:
1. Fish C 的答案中,cls 和 arg的用法确实看不懂,读了一些网络资料也不懂。能否言简意赅,帮我普及一下,怎么理解它。
2. 我的尝试,错在何处呀?
本帖最后由 逃兵 于 2021-3-5 14:14 编辑
class C2F(float) 这里C2F类继承于float,重写__new__方法
cls是类对象,表示需要实例化的类。区别于self,可以写其他参数,一般默认为cls
arg是你定义的参数
建议重新看一下视频七分钟后的内容
https://www.bilibili.com/video/BV1Fs411A7HZ?p=42
你写的代码稍作修改也是可以使用的
- class Temperatures():
- def __init__ (self, f, c):
- self.f = f
- self.c = c
-
- def c2f(self):
- return (self.c*1.8+32)
- def f2c(self):
- return ((self.f-32)/1.8)
复制代码
- >>> a = Temperatures(89.6,32)
- >>> a.c2f()
- 89.6
- >>> a.f2c()
- 31.999999999999996
复制代码
|
|