aaronduan 发表于 2020-4-15 15:23:45

求助在使用__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'

qiuyouzhi 发表于 2020-4-15 15:26:23

1,https://www.jianshu.com/p/08d7956601de
2,都买了VIP了,还不知道发问题帖子的板块吗?

aaronduan 发表于 2020-4-16 15:26:39

{:5_100:}
页: [1]
查看完整版本: 求助在使用__new__()魔法方法时候,不可变类型?