鱼C论坛

 找回密码
 立即注册
查看: 875|回复: 4

小甲鱼第41课 类和对象:魔法方法:构造和析构课后作业

[复制链接]
发表于 2019-2-17 11:36:30 | 显示全部楼层 |阅读模式

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

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

x
一、按照以下要求,定义一个类实现摄氏度到华氏度的转换(转换公式:华氏度 = 摄氏度*1.8+32)
要求:我们希望这个类尽量简练地实现功能,如下
>>> print(C2F(32))
89.6
  1. class C2F(float):           //1.这里定义类的时候,不是只是继承float类中的定义吗?为什么能直接带入数据呢?那这不不是跟函数一样吗?
  2.         "摄氏度转换为华氏度"
  3.         def __new__(cls, arg=0.0):           2.这里cls的作用是self吗?为什么要先定义arg=0.0呢 然后下面又能计算arg*1.8+32? 不懂
  4.                 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

  1. class Nint(int):
  2.         def __new__(cls, arg=0):          //3.这里为什么要定义arg=0呢?
  3.                 if isinstance(arg, str):
  4.                         total = 0
  5.                         for each in arg:
  6.                                 total += ord(each)
  7.                         arg = total
  8.                 return int.__new__(cls, arg)
复制代码
             //4.这里为什么不能直接输出total呢?

一共有四个问题,self、__init__、__new__的相关概念很混乱,请大神见谅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-2-23 09:46:28 | 显示全部楼层
顶一顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-23 11:54:56 | 显示全部楼层
1. 是继承类。类可以传入参数啊,哪里有说不行吗? 和函数可不一样哦。
2. 这里 cls 只是是类 C2F 自己, self 一般用来指 类实例 而不是类,有区别,arg=0.0 表示当你什么参数都不给时,默认为 0.0,例:
  1. print(C2F())
复制代码

3.这里和上一问的 arg 一样的作用,默认参数。
4. 没谁说不能, 你自己都没有尝试过吧, 别人这样子写然后你就觉得不能所以过来提问? 答案是能。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-23 20:28:08 | 显示全部楼层
°蓝鲤歌蓝 发表于 2019-2-23 11:54
1. 是继承类。类可以传入参数啊,哪里有说不行吗? 和函数可不一样哦。
2. 这里 cls 只是是类 C2F 自己,  ...

谢谢大佬 但是cls还是不懂 这里为什么两个例子都要用cls呢 cls和self的区别是什么呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-24 11:35:45 | 显示全部楼层
搞搞编程Kyle 发表于 2019-2-23 20:28
谢谢大佬 但是cls还是不懂 这里为什么两个例子都要用cls呢 cls和self的区别是什么呢

cls 和 self 的区别我之前回答过了,至于为什么都要用 cls, python3里类的 __new__()函数第一个参数都为 cls 是规定的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 07:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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