[英]Why is my code returning the address of the variable instead of the value?
我发现很难理解为什么我的代码返回我的 memory 地址。 我曾尝试分别使用__str__
和__repr__
但也许我不熟悉它们的工作原理。
import random
class Card:
def __init__(self, suit, value):
self.suit = suit #['H','D','C','S']
self.value = value #['A',2,3,4,5,6,7,8,9,10,'J','Q','K']
class Deck:
def __init__(self):
self.cards =[]
def __repr__(self):
return f'Card("{self.card}")'
def build(self):
for x in['H','D','C','S']:
for y in range(1,14):
self.cards.append(Card(x,y))
if(y==1):
self.cards.append(Card(x,'A'))
elif(y==11):
self.cards.append(Card(x,'J'))
elif(y==12):
self.cards.append(Card(x,'Q'))
elif(y==13):
self.cards.append(Card(x,'K'))
def shuffle(self):
for i in range(len(self.cards)-1,0,-1):
r = random.randint(0,i)
self.cards[i], self.cards[r]= self.cards[r], self.cards[i]
def deal(self):
card = self.cards.pop()
print(repr(card))
d = Deck()
d.build()
d.shuffle()
d.deal()
<__main__.Card object at 0x7f836e0ed070>
以上是我收到的代码和 output,如有任何帮助,我们将不胜感激。
您似乎忘记了为Card
class 定义__repr__
方法。应该是这样的:
def __repr__(self):
return f"Card({self.value})"
而对于 Deck,我会将其定义为:
def __repr__(self):
return f'Deck("{self.cards}")'
结果 output 将是Card(<some-number>)
。
您的 Class Card
需要__repr__
function,因为 python 试图打印 Type Card 的实例,而不是卡片组:
class Card:
def __init__(self, suit, value):
self.suit = suit # ['H','D','C','S']
self.value = value # ['A',2,3,4,5,6,7,8,9,10,'J','Q','K']
def __repr__(self):
return f'{self.suit}-{self.value}'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.