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 AttributeError:Y实例没有属性';X';_Python_Oop_Attributeerror - Fatal编程技术网

Python AttributeError:Y实例没有属性';X';

Python AttributeError:Y实例没有属性';X';,python,oop,attributeerror,Python,Oop,Attributeerror,我是Python OOP新手,我正在构建一个21点游戏来提高我对OO Python的理解和实现 以下是我迄今为止为我的牌组和卡片类所写的内容: import random class Deck: def __init__(self): # init variables self.cards = [] self.numCards = 0 self.populate_cards() def deal(self):

我是Python OOP新手,我正在构建一个21点游戏来提高我对OO Python的理解和实现

以下是我迄今为止为我的牌组和卡片类所写的内容:

import random

class Deck:
    def __init__(self):
        # init variables
        self.cards = []
        self.numCards = 0
        self.populate_cards()

    def deal(self):
        return self.cards.pop(random.randint(0, (self.numCards - 1)))

    def populate_cards(self):
        for suit in range (0, 5):
            for face in range (0, 13):
                card = Card(face, suit)
                self.cards.append(card)
                self.numCards = self.numCards + 1

    def cards_left(self):
        print (self.numCards)
        print (self.cards)

class Card:
    def __init__(self, face = 0, suit = 0):
        self.face = face
        self.suit = suit

    def assign_value_using_face(self):
        pass
当我执行Python提示符时,在将Cards.py文件导入Python之后,我将尝试创建一个Deck实例

>>> from Cards import *
>>> deck = Deck()
但是,我一直收到一个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "Cards.py", line 8, in __init__
    self.populate_cards()
AttributeError: Deck instance has no attribute 'populate_cards'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“Cards.py”,第8行,在初始化中__
self.populate_cards()
AttributeError:Deck实例没有“填充卡片”属性

我查看了Stackoverflow,发现所有发生此错误的情况都没有正确使用populate_cards()前面的“self.”,或者没有传递“self”参数来填充_cards,这两种情况我都在做。有人能帮忙吗?提前谢谢

您的代码对我来说运行时没有错误,我可以成功地执行
Deck()
。检查混合制表符和空格,并检查缩进问题。此外,请检查拼写,如果编辑器中打开了
Cards.py
,请将其保存。另外,请注意
deal
未正确调整
self.numCards
。为什么不直接使用
len(self.cards)
而不是有一个额外的变量,您需要记住每次
self.cards
更改时都要更改它?@BrenBarn您正在运行哪个版本的Python?我正在运行2.7.3我正在使用2.7.5,但我怀疑这是版本问题。是否可能您没有加载您认为是的文件(即,正在运行旧版本)?还请注意,如果您一次导入模块,再次导入将不会产生任何效果。您需要使用
重新加载
(或重新启动解释器)查看对模块所做更改的效果。