鱼C论坛

 找回密码
 立即注册
查看: 832|回复: 2

[已解决]43讲动动手 答案解析

[复制链接]
发表于 2020-6-4 16:44:05 | 显示全部楼层 |阅读模式
10鱼币
题目:
1. 定义一个单词(Word)类继承自字符串,重写比较操作符(参考自学:Python 魔法方法详解),当两个 Word 类对象进行比较时,根据单词的长度来进行比较大小。

我自己做了2个方案:
方案1:
class Word(str):
    def __new__(cls,arg):
        arg = len(arg.partition(' ')[0])
        return str.__new__(cls,arg)
问题:
只返回第一个单词长度给str类,然后直接用str类的比较方法,自己不再重写比较魔法方法可以吗?
我自己试运行了几个也没有出现问题

方案2:
class Word(str):
   
    def __init__(self,arg):
        self.length = len(arg.partition(' ')[0])
      
    def __lt__(self,other):
        return self.length < other.length
   
    def __le__(self,other):
        return self.length <= other.length
   
    def __eq__(self,other):
        return self.length == other.length
   
    def __ne__(self,other):
        return self.length != other.length
   
    def __gt__(self,other):
        return self.length > other.length
   
    def __ge__(self,other):
        return self.length >= other.length
问题:
只将字符串初始化,返回第一个单词的长度,然后重写比较魔法方法,不在__new__里重载。有什么问题吗?
我试了几次也没出现问题
最佳答案
2020-6-4 16:44:06
本帖最后由 sunrise085 于 2020-6-4 17:09 编辑

两种方法都能满足题目要求,只是所得到的该类的实例对象不同,小甲鱼的方法得到的是地一个单词,你的方法得到的是输入的整个字符串,例如,str1=Word("How do you do")用小甲鱼的方法得到的str1是"How",用你的方法得到的str1是"How do you do"

最佳答案

查看完整内容

两种方法都能满足题目要求,只是所得到的该类的实例对象不同,小甲鱼的方法得到的是地一个单词,你的方法得到的是输入的整个字符串,例如,str1=Word("How do you do")用小甲鱼的方法得到的str1是"How",用你的方法得到的str1是"How do you do"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-4 16:44:06 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-6-4 17:09 编辑

两种方法都能满足题目要求,只是所得到的该类的实例对象不同,小甲鱼的方法得到的是地一个单词,你的方法得到的是输入的整个字符串,例如,str1=Word("How do you do")用小甲鱼的方法得到的str1是"How",用你的方法得到的str1是"How do you do"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-4 20:49:19 | 显示全部楼层
0.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 21:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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