python - 如何在列表中创建对象的字符串表示形式?
问题描述
我正在尝试使用 Python 创建国王杯游戏(涉及纸牌的饮酒游戏)。就目前而言,当我打印卡片组和参与者列表时,控制台似乎正在打印内存地址。我将不胜感激任何帮助、指示、提示和建议。谢谢,麻烦您了。
import random
class Participant:
def __init__(self, name, gender):
self.name = name
self.gender = gender
self.cards = []
def drawCard(self):
self.cards += deck.pop()
def showCards(self):
print(self.name)
print(self.cards)
class Card:
def __init__(self, value, suite):
self.value = value
self.suite = suite
def getValue(self):
return self.value
def getSuite(self):
return self.suite
def __str__(self):
return ("{0} of {1}".format(self.value, self.suite))
deck = []
participants = []
def shuffleDeck():
for suite in ["Clubs", "Diamonds", "Hearts", "Spades"]:
for num in ["Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"]:
deck.append(Card(num, suite))
random.shuffle(deck)
return deck
players = input("Enter the number of players: ")
numPlayers = int(players)
if numPlayers < 3:
print(players)
print("Not enough players.")
elif numPlayers > 12:
print(players)
print("That's too many players.")
else:
for player in range(numPlayers):
player += 1
name = input("Player %s's Name: " %player)
gender = input("Player %s's Gender: " %player)
participants.append(Participant(name, gender))
deck = shuffleDeck()
print(deck)
print(participants)
解决方案
为每个实例定义一个表示。例如:
class Card:
def __init__(self, value, suite):
self.value = value
self.suite = suite
def getValue(self):
return self.value
def getSuite(self):
return self.suite
def __str__(self):
return ("{0} of {1}".format(self.value, self.suite))
def __repr__(self):
return ("{0} of {1}".format(self.value, self.suite))
然后
>> a = [Card(3,'Diamonds'),Card(2,'Spades')]
>> print(a)
[3 of Diamonds, 2 of Spades]
也就是说,请参阅@abarnerts 关于格式化 repr 的评论
推荐阅读
- javascript - 获取 discord.js 消息请求的大小
- javascript - Twilio Conversations Client create() 不返回 Promise
- django - 将 Django 应用程序部署到 Ubuntu 服务器时如何解决 403 Forbidden Apache2?
- python - 如何将二项式 1-2-1 过滤器应用于 2D numpy 数组?
- r - 根据我选择的列更改的滑块输入中的最大值和最小值
- amazon-web-services - AWS 策略的“版本”约定
- javascript - 如何使用 PrintJS 打印本地文件
- sql - 更新具有来自同一表的最新相关 id 的表列
- scala - 由于 apache http 问题,Flink 提交错误
- ruby-on-rails - Rails has_many 关联如何保证每条关联记录只有一个?