鱼C论坛

 找回密码
 立即注册
查看: 5669|回复: 7

[已解决]Python魔法方法重写后没有结果 43讲自己动手2

[复制链接]
发表于 2017-4-25 18:13:17 | 显示全部楼层 |阅读模式

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

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

x
43讲自己动手2 要求自己写一个Word类比较实例化对象的长度?
这是我写的:
  1. class Word(str):
  2.     def __lt__(self, other):
  3.         if len(self) < len(other):
  4.             return True
  5.         else:
  6.             return False

  7.     def __le__(self, other):
  8.         if len(self) <= len(other):
  9.             return True
  10.         else:
  11.             return False

  12.     def __eq__(self, other):
  13.         if len(self) == len(other):
  14.             return True
  15.         else:
  16.             return False

  17.     def __ne__(self, other):
  18.         if len(self) != len(other):
  19.             return True
  20.         else:
  21.             False

  22.     def __gt__(self, other):
  23.         if len(self) > len(other):
  24.             return True
  25.         else:
  26.             False

  27.     def __ge__(self, other):
  28.         if len(self) >= len(other):
  29.             return True
  30.         else:
  31.             False

  32. a = Word()
  33. ac = Word()
  34. if a < ac:
  35.     print('True')
复制代码


感觉跟小甲鱼老师写的没什么不同,只是我没有判断空格(不清楚意思可以去看原题) 但运行没有结果?按理说会打印一个True 啊
最佳答案
2017-4-25 19:59:02
把38,39行改为:
  1. a = Word('a')
  2. ac = Word('ac')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-4-25 19:59:02 | 显示全部楼层    本楼为最佳答案   
把38,39行改为:
  1. a = Word('a')
  2. ac = Word('ac')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-27 21:13:57 | 显示全部楼层

这样不是对传入的参数进行长队对比吗?跟前面实例化对象的长度不是完全无关吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-28 08:10:59 | 显示全部楼层
太阳花田 发表于 2017-4-27 21:13
这样不是对传入的参数进行长队对比吗?跟前面实例化对象的长度不是完全无关吗?

你在str的基础上建立word对象,并比较大小,但你实例化的都是空字符串。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-28 09:05:08 | 显示全部楼层
冬雪雪冬 发表于 2017-4-28 08:10
你在str的基础上建立word对象,并比较大小,但你实例化的都是空字符串。

那怎样才能不需要传参,只需要实例化就能对实例化的对象的字符串长度做比较
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-28 10:07:14 | 显示全部楼层
太阳花田 发表于 2017-4-28 09:05
那怎样才能不需要传参,只需要实例化就能对实例化的对象的字符串长度做比较

我的理解,在实例化时需要给它值,即赋值。实际上
a = 32
就相当于 a = int(32)
即实例化一个int对象。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-28 11:09:16 | 显示全部楼层
冬雪雪冬 发表于 2017-4-28 10:07
我的理解,在实例化时需要给它值,即赋值。实际上
a = 32
就相当于 a = int(32)

这个我能理解 但就这道题目而言,如果要传参才能比较的话感觉没有意义,参数一变结果就变了,和对象无关了。  我想知道有不需要传参的办法没?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-28 11:17:42 | 显示全部楼层
太阳花田 发表于 2017-4-28 11:09
这个我能理解 但就这道题目而言,如果要传参才能比较的话感觉没有意义,参数一变结果就变了,和对象无关 ...

那你想比较的是什么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 20:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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