|
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__里重载。有什么问题吗?
我试了几次也没出现问题
本帖最后由 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"
|