课后作业43
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()) < len(other.split())
def __gt__(self, other): #大于
return len(self.split()) > len(other.split())
def __eq__(self, other): #等于
return len(self.split()) == len(other.split())
我这样不用__new__方法也是可以实现加分要求的,看起来好像是可以的,不知道有没有什么问题。还有既然是比较字符串的长度为什么不能等于呀?怎么会不符合逻辑?
1. 当传入的参数有空格,两个代码就有区别了
2. 既然是比较字符串的长度为什么不能等于呀
什么意思? zltzlt 发表于 2020-8-2 20:53
1. 当传入的参数有空格,两个代码就有区别了
2.
什么意思?
注意,我们没有定义 __eq__ 和 __ne__ 方法。这是因为将会产生一些怪异不符合逻辑的结果(比如 Word('FishC') 会等于 Word('Apple'))。他是这样说的。
第二个传入有空格的参数,比较的也是空格前的字符串长度呀。 Monsterccc 发表于 2020-8-2 20:55
注意,我们没有定义 __eq__ 和 __ne__ 方法。这是因为将会产生一些怪异不符合逻辑的结果(比如 Word('Fis ...
功能全靠你自己说了算,你要是不想听小甲鱼的也可以…… 永恒的蓝色梦想 发表于 2020-8-2 20:58
功能全靠你自己说了算,你要是不想听小甲鱼的也可以……
好吧,那第一个问题呢? Monsterccc 发表于 2020-8-2 20:59
好吧,那第一个问题呢?
不会出什么问题,但是每次都 split 效率会很低。 永恒的蓝色梦想 发表于 2020-8-2 21:00
不会出什么问题,但是每次都 split 效率会很低。
哦 哦,那我在一开始用__init__初始化这两个参数效果跟__new__是不是一样的呀?
Monsterccc 发表于 2020-8-2 21:02
哦 哦,那我在一开始用__init__初始化这两个参数效果跟__new__是不是一样的呀?
不一样,__init__ 不会有任何效果。 永恒的蓝色梦想 发表于 2020-8-2 21:05
不一样,__init__ 不会有任何效果。
也就是说__init__初始化过的参数传入不到下面的方法里对吧。{:10_272:} Monsterccc 发表于 2020-8-2 21:11
也就是说__init__初始化过的参数传入不到下面的方法里对吧。
对。
页:
[1]