gpt4 book ai didi

python - 如何正确实现/重载 "__repr__ "?

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:44 25 4
gpt4 key购买 nike

刚接触 Python,这可能是一个愚蠢的问题,但是如何正确实现 repr 方法?

我编写了一个快速的小程序来模拟纸牌游戏,但我不知道为 repr 方法编写什么。 Card 类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()

此外,请随意评论您想要的任何内容,无论是设计缺陷还是代码冗余,实际上是任何内容。提前致谢!

最佳答案

您应该返回字符串类型,例如在 Deck 中:

def __repr__(self):
...
return 'Deck : '+str(self._deck)

关于python - 如何正确实现/重载 "__repr__ "?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36323808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com