求助在使用__new__()魔法方法时候,不可变类型?
class Word(str):#'''存储单词的类,定义比较单词的几种方法'''
def __init__(self, word):
# 注意我们必须要用到 __new__ 方法,因为 str 是不可变类型
# 所以我们必须在创建的时候将它初始化
if ' ' in word:
print ("Value contains spaces. Truncating to first space.")
word = word[:word.index(' ')] #单词是第一个空格之前的所有字符
print(word)
#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)
上述代码是12章42讲的答案,我讲__new__()方法改成用__int__()进行初始化的时候,当实例化对象的时候,word并没有删除空格,请教各位大侠?
例如:
>>> c=Word('ssdfsd')
Value contains spaces. Truncating to first space.
ss
>>> a = Word('sdfs')
>>> c
'ssdfsd' 1,https://www.jianshu.com/p/08d7956601de
2,都买了VIP了,还不知道发问题帖子的板块吗? {:5_100:}
页:
[1]