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.size
和t
,则会输出以下值:s = Square(8)
和t = Square(7)
。
答案 0 :(得分:2)
您应该按如下方式实施:
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__
可以直接使用>
( g reater t han),我们正在明确比较{ {1}}两个参数的属性(size
等同于s > t
或s.__gt__(t)
)。
我还将Square.__gt__(s, t)
更改为:
看起来像一个有效的Python表达式,可用于重新创建具有相同值的对象(给定适当的环境)
您应该阅读the documentation了解有关这些&#34;魔术方法的更多信息&#34;。