太阳花田 发表于 2017-4-25 18:13:17

Python魔法方法重写后没有结果 43讲自己动手2

43讲自己动手2 要求自己写一个Word类比较实例化对象的长度?
这是我写的:
class Word(str):
    def __lt__(self, other):
      if len(self) < len(other):
            return True
      else:
            return False

    def __le__(self, other):
      if len(self) <= len(other):
            return True
      else:
            return False

    def __eq__(self, other):
      if len(self) == len(other):
            return True
      else:
            return False

    def __ne__(self, other):
      if len(self) != len(other):
            return True
      else:
            False

    def __gt__(self, other):
      if len(self) > len(other):
            return True
      else:
            False

    def __ge__(self, other):
      if len(self) >= len(other):
            return True
      else:
            False

a = Word()
ac = Word()
if a < ac:
    print('True')

感觉跟小甲鱼老师写的没什么不同,只是我没有判断空格(不清楚意思可以去看原题) 但运行没有结果?按理说会打印一个True 啊

冬雪雪冬 发表于 2017-4-25 19:59:02

把38,39行改为:
a = Word('a')
ac = Word('ac')

太阳花田 发表于 2017-4-27 21:13:57

冬雪雪冬 发表于 2017-4-25 19:59
把38,39行改为:

这样不是对传入的参数进行长队对比吗?跟前面实例化对象的长度不是完全无关吗?

冬雪雪冬 发表于 2017-4-28 08:10:59

太阳花田 发表于 2017-4-27 21:13
这样不是对传入的参数进行长队对比吗?跟前面实例化对象的长度不是完全无关吗?

你在str的基础上建立word对象,并比较大小,但你实例化的都是空字符串。

太阳花田 发表于 2017-4-28 09:05:08

冬雪雪冬 发表于 2017-4-28 08:10
你在str的基础上建立word对象,并比较大小,但你实例化的都是空字符串。

那怎样才能不需要传参,只需要实例化就能对实例化的对象的字符串长度做比较

冬雪雪冬 发表于 2017-4-28 10:07:14

太阳花田 发表于 2017-4-28 09:05
那怎样才能不需要传参,只需要实例化就能对实例化的对象的字符串长度做比较

我的理解,在实例化时需要给它值,即赋值。实际上
a = 32
就相当于 a = int(32)
即实例化一个int对象。

太阳花田 发表于 2017-4-28 11:09:16

冬雪雪冬 发表于 2017-4-28 10:07
我的理解,在实例化时需要给它值,即赋值。实际上
a = 32
就相当于 a = int(32)


这个我能理解 但就这道题目而言,如果要传参才能比较的话感觉没有意义,参数一变结果就变了,和对象无关了。我想知道有不需要传参的办法没?

冬雪雪冬 发表于 2017-4-28 11:17:42

太阳花田 发表于 2017-4-28 11:09
这个我能理解 但就这道题目而言,如果要传参才能比较的话感觉没有意义,参数一变结果就变了,和对象无关 ...

那你想比较的是什么?
页: [1]
查看完整版本: Python魔法方法重写后没有结果 43讲自己动手2