gpt4 book ai didi

python - 如何创建命名元组的 __repr__?

转载 作者:行者123 更新时间:2023-12-03 15:10:33 25 4
gpt4 key购买 nike

如何创建特殊方法 __repr__我可以打印的地方,例如 '6 of spades''Q of diamonds' ?

我如何从 namedtuple 访问数据,请记住我有一个 listnamedtuple s 在 self._cards ?

import collections

cards = collections.namedtuple('Card', ['rank', 'suit'])

class Deck:
ranks = [str(n) for n in range (2,11)] + list('JQKA')
suits = 'spades diamonds hearts clubs'.split()

def __init__(self):
self._cards = [cards(rank, suit) for suit in self.suits for rank in self.ranks]

def __len__(self):
return len(self._cards)

def __getitem__(self, item):
return self._cards[item]

def __repr__(self):
return '%s of %s' % () # <-- don't know how to assign the string

b = ()
for i in b:
print(i)

最佳答案

如果重命名 cards 会更清楚至 Card ,因为这是您分配给该类的名称:

Card = collections.namedtuple('Card', ['rank', 'suit'])

您可以扩展 namedtuple就像任何其他类(class)一样,包括给它 __repr__方法。你甚至可以重用类名,因为 class语句是一种赋值类型:
class Card(Card):
def __repr__(self):
return f'{self.rank} of {self.suit}'

更紧凑的版本是
class Card(collections.namedtuple('Card', ['rank', 'suit'])):
def __repr__(self):
return f'{self.rank} of {self.suit}'

关于python - 如何创建命名元组的 __repr__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53900339/

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