これは愚かな質問かもしれませんが、のreprメソッドを正しく実装するにはどうすればいいですか?「__repr__」を正しく実装/オーバーロードする方法は?
私はカードのゲームをシミュレートするための素早いプログラムを書いたが、reprメソッドのために何を書くべきか分からない。 カードのクラスためのrepr方法は単純明快だったが、ここに私のコードです私はDeckOfCardsクラスのために何をするか分からない。また
import random
class Card:
'''Create a single card, by id number'''
# Class variables, created once for the class
suits = [ '\u2660', '\u2661', '\u2662', '\u2663' ]
ranks = [ 'A','2','3','4','5','6','7','8','9','10','J','Q','K' ]
def __init__(self, n=0):
# instance variables for _num, _rank, _suit, _value
if 0 <= n < 52:
self._num = n
self._rank = Card.ranks[n%13] # note referencing class vars
self._suit = Card.suits[n//13]
self._value = n%13 + 1
if self._rank == 'A':
self._value = 14
else: # invalid card indicators
self._rank = 'x'
self._suit = 'x'
self._value = -1
def __repr__(self):
return self._rank + self._suit
def __lt__(self,other):
return self._value < other._value
def __le__(self,other):
return self._value <= other._value
def __eq__(self,other):
return self._value == other._value
class DeckOfCards:
'''A Deck is a collection of cards'''
def __init__(self):
self._deck = [ Card(i) for i in range(52) ]
def __repr__(self):
return 'Deck : ', self._deck
def shuffle(self):
return random.shuffle(self._deck)
def deal_a_card(self, i=-1):
#that way player can choose where to draw from
return self._deck.pop(i)
def cards_left(self,count):
return len(self._deck)
new_deck = DeckOfCards()
何にコメントすること自由に感じ、設計上の欠陥であろうと、コード内の冗長性であろうと、文字通り何でも好きです。前もって感謝します!
これは私が手でそれを手にした方法ですが、たびたび毎回文字列に変換するのは無駄だったようです。しかし、はい、そうするでしょう。 –
人々が回答を投稿し続けることがないように、質問に回答します。 :) – libby
時間制限は、あまりにも速いと答えました。しかし、ありがとう! –