pythong作业43 最后一题
为什么不能这么写class Word(str):
def __init__(self,word = ''):
ifnot word.isspace():
self.word = word
else:
self.word = word[:word.index(' ')]
self.len = len(self.word)
def __lt__(self,other):
return self.len < other.len
def __le__(self,other):
return self.len <= other.len
def __eq__(self,other):
return self.len == other.len
def __ne__(self,other):
return self.len != other.len
def __gt__(self,other):
return self.len > other.len
def __ge__(self,other):
return self.len >= other.len 原题目是定义一个Word类,比较字符串长度,如果字符串中有空格,就取第一个空格前的字符串
这个是原答案,它用new重载了str
class Word(str):
'''存储单词的类,定义比较单词的几种方法'''
def __new__(cls, word):
# 注意我们必须要用到 __new__ 方法,因为 str 是不可变类型
# 所以我们必须在创建的时候将它初始化
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)
除了你之外,别人是不知道作业43是神马鬼 wp231957 发表于 2021-9-21 13:20
除了你之外,别人是不知道作业43是神马鬼
。 简单写一下,看看区别。
class Word(str):
def __init__(self,word = ''):
self.word = 'rr'
>>> a=Word('abc')
>>> a
'abc'
>>> a.word
'rr'
页:
[1]