belf 发表于 2020-4-10 09:22:36

有关python课后作业43讲的疑问

本帖最后由 belf 于 2020-4-10 09:24 编辑

如题,以下是我自己写的代码,我并没有初始化__new__方法。但运行起来也是没有问题的,不知道这样写是否存在问题。另外,想知道初始化__new__方法的目的是什么?希望得到帮助,感谢大家!class Word(str):
    def __lt__(self,other):
      if self.find(' ') == -1:
            return int.__lt__(len(self),len(other))
      else:
            self = self.split()
            return int.__lt__(len(self),len(other))
      
    def __le__(self,other):
      if self.find(' ') == -1:
            return int.__le__(len(self),len(other))
      else:
            self = self.split()
            return int.__le__(len(self),len(other))

    def __eq__(self,other):
      if self.find(' ') == -1:
            return int.__eq__(len(self),len(other))
      else:
            self = self.split()
            return int.__eq__(len(self),len(other))
      
    def __ne__(self,other):
      if self.find(' ') == -1:
            return int.__ne__(len(self),len(other))
      else:
            self = self.split()
            return int.__ne__(len(self),len(other))

    def __gt__(self,other):
      if self.find(' ') == -1:
            return int.__gt__(len(self),len(other))
      else:
            self = self.split()
            return int.__gt__(len(self),len(other))

    def __ge__(self,other):
      if self.find(' ') == -1:
            return int.__ge__(len(self),len(other))
      else:
            self = self.split()
            return int.__ge__(len(self),len(other))

sunrise085 发表于 2020-4-10 10:46:45

你这样写也是可以的。
按照小甲鱼的答案,重载__new__方法之后,在创建该类的对象的时候,就把传入的参数字符串进行了处理,删掉了空格以及之后的内容,将之限定成一个单词了。
例如:同样的执行a=Word("work hard"),你的程序得到得到a是字符串"work hard",小甲鱼的答案得到的a是"work"

belf 发表于 2020-4-10 10:59:03

感谢回答!谢谢!
页: [1]
查看完整版本: 有关python课后作业43讲的疑问