Было бы понятнее, если бы вы переименовали cards
в Card
, поскольку это имя, которое вы присвоили этому классу:
Card = collections.namedtuple('Card', ['rank', 'suit'])
Вы можете расширить namedtuple
, как и любой другой класс,в том числе дать ему __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}'