TypeError:无序类型:int()>Square()

2024-04-24 22:35:37 发布

您现在位置:Python中文网/ 问答频道 /正文

class Square:
    def __init__(self, value):
        self.size = value
    def __repr__(self):
        return '{0}' .format(self.size)
    def bigger_than(self, t):
        if self.size > t:
            return True
        else:
            return False
s = Square(8)
t = Square(7)
if s.bigger_than(t):
    print('The first square is bigger than the second one.')
else:
    print('The first square is not bigger than the second one.')

由此产生的错误消息如下:

Traceback (most recent call last):
  File "sourceFile", line 38, in <module>
    if s.bigger_than(t):
  File "sourceFile", line 14, in bigger_than
    if self.size > t:
TypeError: unorderable types: int() > Square()

我想问题出在bigger_than的某个地方,但我不太确定。我要做的是添加一个方法,将正方形的大小与另一个正方形的大小进行比较,并输出正方形的大小。你知道吗

如果我尝试和print()self.sizet,它会输出来自:s = Square(8)t = Square(7)的值。你知道吗


Tags: theselfsizereturnifvaluedefelse
1条回答
网友
1楼 · 发布于 2024-04-24 22:35:37

您应该执行以下操作:

class Square:

    def __init__(self, value):
        self.size = value

    def __repr__(self):
        return 'Square({0.size})'.format(self)

    def __gt__(self, other):
       return self.size > other.size


s = Square(8)
t = Square(7)

if s > t:
    print('The first square is bigger than the second one.')
else:
    print('The first square is not bigger than the second one.')

注意,命名方法__gt__允许直接使用>greaterthan),并且我们显式比较两个参数的size属性(s > t等价于s.__gt__(t)Square.__gt__(s, t))。你知道吗

我还将__repr__更改为:

look like a valid Python expression that could be used to recreate an object with the same value (given an appropriate environment)

您应该阅读the documentation以获得有关这些“神奇方法”的更多信息。你知道吗

相关问题 更多 >