马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
|