[英]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.