Я чувствую, что это должно быть довольно распространенной проблемой, когда кто-то впервые начинает заниматься с классами, но я не могу найти ответ на этот вопрос. Я пытаюсь сделать игру в блэкджек, и часть оценки заключается в том, чтобы завершить процесс сделки с использованием класса. Код, который я использую для этого ниже:
class Deal:
def __init__(self,shuffled_deck,dealt_card):
self.shuffled_deck = shuffled_deck
self.dealt_card = dealt_card
def dealing(self):
dealt_card = []
dealt_card += shuffled_deck.pop(0)
print(dealt_card)
#Dealing the first round of cards
for name in player_hand:
Deal(shuffled_deck,dealt_card).dealing()
player_hand[name] += dealt_card
для справки:
- shuffled_deck - список карт в колоде в случайном порядке
- dealt_card изначально пустой список
Что я хочу сделать, так это отключить первый элемент в списке карт и установить его равным dealt_card. Затем я хочу добавить карту dealt_card в текущий player_hand - это пара ключ: список в диктоннике. Затем я хочу повторить этот процесс для каждого игрока в словаре.
Что я не понимаю, так это то, что вызов класса Deal () приводит к изменению shuffled_deck и изменениям, происходящим вне класса. Однако изменение переменной dealt_card происходит внутри класса, но вне класса оно остается в виде пустого списка. Почему только половина изменений, внесенных классом, переносится в пространство имен вне его?