助けてくれてありがとう、これはおそらく新しい質問だと思いますが、私の質問に答えているように見える検索では何も見つかりません。これは、トレースバックの関連部分です。
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'
これが何を意味するのか混乱しています....「関数」オブジェクトとは何ですか?また、比較よりも優れている行から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