関数同士の繋がりが分かりません。
下記のコードは、本を参考にカードゲームを作成している途中です。
【疑問点】
card1 = Card(11,1)を呼び出した時に、
Cardクラスのすべての関数が動くのですか?
だとしたら、def lt の(c2)の値はどう関わってくるのでしょうか。
よろしくお願い致します。
【分からないコード】
class Card: marks = ['spades','hearts','diamonds','clubs'] values = [None,None, '2','3','4','5','6','7','8','9', '10','Jack','Queen','King','Ace'] def __init__(self,v,m): #markもvalueも整数値 self.value = v self.mark = m def __lt__(self,c2): if self.value < c2: return True if self.value == c2: if self.mark < c2: return True else: return False return False def __gt__(self,c2): if self.value > c2: return True if self.value == c2: if self.mark > c2: return True else: return False return False def __repr__(self): v = self.values[self.value] + 'of' + self.marks[self.mark] return v card1 = Card(11,1) card2 = Card(11,2) print(card1 < card2) コード
【表示結果】
False
そもそもコードを見る限りclass Cardというものが定義されていません。
それと、コードはコードの挿入機能を使って書いて下さい。
読みづらいです。
あと、謎に見出しが使われているので整理して下さい。
というか、pythonはインデントが重要ですのでインデントが削除された状態では読めません。
def hoge は def __hoge__ だったりしませんか?
このままでは読みにくいので、コードの挿入機能を使って書いてください。
見出しが使われているのは、ソースのコメンドがMarkDownの見出しだからです。
特殊メソッドは「__」で囲まれてますが、MarkDownだとイタリック指定になります。
お、なるほどです。 > TakaiYさん
回答2件
あなたの回答
tips
プレビュー