|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、按照以下要求,定义一个类实现摄氏度到华氏度的转换(转换公式:华氏度 = 摄氏度*1.8+32)
要求:我们希望这个类尽量简练地实现功能,如下
>>> print(C2F(32))
89.6
- class C2F(float): //1.这里定义类的时候,不是只是继承float类中的定义吗?为什么能直接带入数据呢?那这不不是跟函数一样吗?
- "摄氏度转换为华氏度"
- def __new__(cls, arg=0.0): 2.这里cls的作用是self吗?为什么要先定义arg=0.0呢 然后下面又能计算arg*1.8+32? 不懂
- return float.__new__(cls, arg * 1.8 + 32)
复制代码
二、2. 定义一个类继承于 int 类型,并实现一个特殊功能:当传入的参数是字符串的时候,返回该字符串中所有字符的 ASCII 码的和(使用 ord() 获得一个字符的 ASCII 码值)。
实现如下:
>>> print(Nint(123))
123
>>> print(Nint(1.5))
1
>>> print(Nint('A'))
65
>>> print(Nint('FishC'))
461
- class Nint(int):
- def __new__(cls, arg=0): //3.这里为什么要定义arg=0呢?
- if isinstance(arg, str):
- total = 0
- for each in arg:
- total += ord(each)
- arg = total
- return int.__new__(cls, arg)
复制代码 //4.这里为什么不能直接输出total呢?
一共有四个问题,self、__init__、__new__的相关概念很混乱,请大神见谅
|
|