Как я могу исправить эту ошибку: AttributeError: у объекта 'list' нет атрибута 'items'? - PullRequest
1 голос
/ 13 апреля 2019

Я пытаюсь добавить значения карт, которые извлекаются из колоды.Я не могу понять, как напечатать добавленные значения карточек.

Я пытался изменить свой модуль и импортировать модуль по-другому.

useofhand.py

def main():
    suits = ['Spades', 'Diamonds', 'Hearts', 'Clubs']
    ranks = ['Ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King'] 
    score = ScoredHand()
    thedeck = frenchdeck(ranks, suits)

createdeck.py

def frenchdeck(ranks, suits):
    decklist = []

    for rank in ranks:
        for suit in suits:
            decklist.append(ScoredCard(rank, suit, ranks, suits))

    return Deck(decklist)

scoredcard.py

class ScoredCard(Card):

    def __init__(self, rank, suit, rank_encoding = None, suit_encoding = None, score_encoding = None):

        super().__init__(rank, suit, rank_encoding, suit_encoding)

        self._score_encoding = score_encoding

card.py

def reversedict(dictionary):
    return {v:k for k, v in dictionary.items()}

class Card:

    def __init__(self, rank, suit, rank_encoding, suit_encoding):
        self.setrank(rank)
        self.setsuit(suit)
        self._rank_decoding = reversedict(rank_encoding)
        self._rank_encoding = rank_encoding
        self._suit_decoding = reversedict(suit_encoding)
        self._suit_encoding = suit_encoding

ВЫХОД

Traceback (most recent call last):
  File ".\useofhand.py", line 30, in <module>
    main()
  File ".\useofhand.py", line 11, in main
    thedeck = frenchdeck(ranks, suits)
  File "C:\Users\MINE\Documents\cisc_120_files\lab4\createdeck.py", line 10, in frenchdeck
    decklist.append(ScoredCard(rank, suit, ranks, suits))
  File "C:\Users\MINE\Documents\cisc_120_files\lab4\scoredcard.py", line 7, in __init__
    super().__init__(rank, suit, rank_encoding, suit_encoding)
  File "C:\Users\MINE\Documents\cisc_120_files\lab4\card.py", line 9, in __init__
    self._rank_decoding = reversedict(rank_encoding)
  File "C:\Users\MINE\Documents\cisc_120_files\lab4\card.py", line 2, in reversedict
    return {v:k for k, v in dictionary.items()}
AttributeError: 'list' object has no attribute 'items'

1 Ответ

0 голосов
/ 13 апреля 2019

Ваш ranks, который является списком, и который становится rank_encoding, является тем, где ваш код содержит ошибки. Вы работаете:

self._rank_decoding = reversedict(rank_encoding)

что делает:

return {v:k for k, v in rank_encoding.items()}

пока:

rank_encoding = ranks = ['Ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King']

Я думаю, что вы хотите сделать:

return rank_encoding.reverse()
...