在此先感谢任何帮助,我知道这可能是一个新问题,但我找不到任何通过搜索似乎回答我的问题.这是追溯的相关部分:
File "war.py", line 183, in __battle
if (card1 > card2):
File "war.py", line 24, in __lt__
return self.int_id % 13 < other.int_id % 13
AttributeError: 'function' object has no attribute 'int_id'
Run Code Online (Sandbox Code Playgroud)
我对这意味着什么感到困惑....什么是'功能'对象?另外,为什么从一个比比较大的行调用lt?为什么现在这是一个问题,因为我单元测试了我的Card类(其中card1和card2是其实例),包括所有丰富的比较运算符,并且它通过了?
这些是我的Card类中丰富的比较方法的定义(int_id,正如您可能猜到的,只是一个实例变量int):
(对不起下面的缩进搞砸了)
class Card():
def __init__(self, int_id):
self.int_id = int_id
def __lt__(self, other):
return self.int_id % 13 < other.int_id % 13
def __le__(self, other):
return self.int_id % 13 <= other.int_id % 13
def __eq__(self, other):
return self.int_id % 13 == other.int_id % 13
def __ne__(self, other):
return self.int_id % 13 != other.int_id % 13
def __gt__(self, other):
return self.int_id % 13 > other.int_id % 13
def __ge__(self, other):
return self.int_id % 13 >= other.int_id % 13
Run Code Online (Sandbox Code Playgroud)
从错误中'function' object has no attribute 'int_id',我猜测函数对象正在与行中的卡进行比较if (card1 > card2):.如果其中一张卡被错误地指定为功能,则可能会发生这种情况.例如,card1 = getMyOtherCard而不是card1 = getMyOtherCard().