鱼C论坛

 找回密码
 立即注册
查看: 1405|回复: 9

[已解决]课后作业43

[复制链接]
发表于 2020-8-2 20:51:58 | 显示全部楼层 |阅读模式

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

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

x
class Word(str):
    def __new__(cls, word):
        if ' ' in word:
            print "Value contains spaces. Truncating to first space."
            word = word[:word.index(' ')] #单词是第一个空格之前的所有字符
        return str.__new__(cls, word)

    def __gt__(self, other):
        return len(self) > len(other)
    def __lt__(self, other):
        return len(self) < len(other)
    def __ge__(self, other):
        return len(self) >= len(other)
    def __le__(self, other):
        return len(self) <= len(other)

class Word(str):
    def __lt__(self, other):    #小于
        return len(self.split()[0]) < len(other.split()[0])

    def __gt__(self, other):    #大于
        return len(self.split()[0]) > len(other.split()[0])

    def __eq__(self, other):    #等于
        return len(self.split()[0]) == len(other.split()[0])

我这样不用__new__方法也是可以实现加分要求的,看起来好像是可以的,不知道有没有什么问题。还有既然是比较字符串的长度为什么不能等于呀?怎么会不符合逻辑?
最佳答案
2020-8-2 21:00:34
Monsterccc 发表于 2020-8-2 20:59
好吧,那第一个问题呢?

不会出什么问题,但是每次都 split 效率会很低。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-2 20:53:00 | 显示全部楼层
1. 当传入的参数有空格,两个代码就有区别了
2.
既然是比较字符串的长度为什么不能等于呀

什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 20:55:55 | 显示全部楼层
zltzlt 发表于 2020-8-2 20:53
1. 当传入的参数有空格,两个代码就有区别了
2.
什么意思?

注意,我们没有定义 __eq__ 和 __ne__ 方法。这是因为将会产生一些怪异不符合逻辑的结果(比如 Word('FishC') 会等于 Word('Apple'))。他是这样说的。
第二个传入有空格的参数,比较的也是空格前的字符串长度呀。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-2 20:58:45 | 显示全部楼层
Monsterccc 发表于 2020-8-2 20:55
注意,我们没有定义 __eq__ 和 __ne__ 方法。这是因为将会产生一些怪异不符合逻辑的结果(比如 Word('Fis ...


功能全靠你自己说了算,你要是不想听小甲鱼的也可以……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 20:59:42 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-8-2 20:58
功能全靠你自己说了算,你要是不想听小甲鱼的也可以……

好吧,那第一个问题呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-2 21:00:34 | 显示全部楼层    本楼为最佳答案   
Monsterccc 发表于 2020-8-2 20:59
好吧,那第一个问题呢?

不会出什么问题,但是每次都 split 效率会很低。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 21:02:38 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-8-2 21:00
不会出什么问题,但是每次都 split 效率会很低。

哦 哦,那我在一开始用__init__初始化这两个参数效果跟__new__是不是一样的呀?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-2 21:05:34 | 显示全部楼层
Monsterccc 发表于 2020-8-2 21:02
哦 哦,那我在一开始用__init__初始化这两个参数效果跟__new__是不是一样的呀?

不一样,__init__ 不会有任何效果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 21:11:58 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-8-2 21:05
不一样,__init__ 不会有任何效果。

也就是说__init__初始化过的参数传入不到下面的方法里对吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-2 22:01:15 | 显示全部楼层
Monsterccc 发表于 2020-8-2 21:11
也就是说__init__初始化过的参数传入不到下面的方法里对吧。

对。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 14:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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