Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我调用Fred.show_hand()时self.hand是一个空列表?_Python_Oop_Inheritance_Empty List - Fatal编程技术网

Python 为什么我调用Fred.show_hand()时self.hand是一个空列表?

Python 为什么我调用Fred.show_hand()时self.hand是一个空列表?,python,oop,inheritance,empty-list,Python,Oop,Inheritance,Empty List,为什么在代码末尾调用Fred.show_hand()时self.hand是一个空列表?我是OOP新手,但仍在思考问题。我看着我的代码,很高兴。它并不完整,但简单直观。我就是搞不懂这件事。我猜这和我不理解的遗传有关。请在你的回答中非常描述。我真的觉得我已经接近理解OOP(至少是基本的) Player在draw方法中使用self.deck 此时(不带self.deck.build_deck())self.deck为空。我的意思是Player类中的self.deck与您在Player之前创建的deck

为什么在代码末尾调用Fred.show_hand()时self.hand是一个空列表?我是OOP新手,但仍在思考问题。我看着我的代码,很高兴。它并不完整,但简单直观。我就是搞不懂这件事。我猜这和我不理解的遗传有关。请在你的回答中非常描述。我真的觉得我已经接近理解OOP(至少是基本的)


Player
draw
方法中使用
self.deck


此时(不带
self.deck.build_deck()
self.deck
为空。我的意思是
Player
类中的
self.deck
与您在Player之前创建的
deck()
不同。您应该在
draw
方法内部或之前的某个地方构建一个组。或者在
fred.deck.build_deck()之前执行
fred.draw()

当我运行您的示例时,它以
索引器:从空列表弹出
继承与合成:,
import random

class Card():

    def __init__(self, value, suit):
        self.value = value
        self.suit = suit

    def show_card(self):
        print(f'{self.value} of {self.suit}')


class Deck():

    def __init__(self):
        self.deck = []
        self.card_values = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
        self.card_suits = ['hearts', 'diamonds', 'clubs', 'spades']

    def build_deck(self):
        for value in self.card_values:
            for suit in self.card_suits:
                self.deck.append(Card(value, suit))

    def show(self):
        for card in self.deck:
            Card.show_card(card)

    def shuffle(self):
        random.shuffle(self.deck)

class Player(Deck):

    def __init__(self):
        super().__init__()
        self.hand = []

    def draw(self):
        return self.hand.append(self.deck.pop())

    def show_hand(self):
        print(f'You have {self.hand}')



d = Deck()
d.build_deck()
d.shuffle()
d.show()

fred = Player()
fred.draw()
fred.show_hand()