自定义模块 - 对象没有属性

Custom Module - Object Has No Attribute

我正在尝试使用我自己的模块,但我遇到了这个错误并且似乎无法弄清楚如何修复它:

Traceback (most recent call last):
  File "/Users/aaron/Desktop/cg/war.py", line 4, in <module>
AttributeError: Deck instance has no attribute 'test'

来自 "war.py":

import deck

d = Deck()
test2()
d.test()

来自 "deck.py":

class Deck:

    def __init__(self):
        self.stack = self.shuffle()
        self.stackSize = len(self.stack)

    def __repr__(self):
        return str(self.stack.items())

    def shuffle(self):
        return {'2c': 'cards/2c.png', '3c': 'cards/3c.png', '4c': 'cards/4c.png', \
                '5c': 'cards/5c.png', '6c': 'cards/6c.png', '7c': 'cards/7c.png', \
                '8c': 'cards/8c.png', '9c': 'cards/9c.png', '10c': 'cards/10c.png', \
                'jc': 'cards/jc.png', 'qc': 'cards/qc.png', 'kc': 'cards/kc.png',
                'ac': 'cards/ac.png'} #continue w/ other suits


    def test():
        print("hello")

def test2():
    print("hello2")

当 运行ning "war.py," test2() 工作并打印 "hello" 时。 d.test() 不起作用,并给出上面的错误。我该如何解决这个问题?

在长运行中,我希望在其他"card game classes"中使用Deck class,这样我就不需要不断地重写它。我想简单地导入 Deck 并使用它,所以如果我这样做不正确,请告诉我!

未找到牌组 class,因为它不在您当前的名称 space 中。要使用它,您需要使用模块名称来引用它。您将遇到与 test2 函数相同的问题。将 war.py 更改为如下所示:

import deck

d = deck.Deck()
deck.test2()
d.test()

您将遇到的另一个错误是您的 Deck.test 方法不需要任何参数,但需要。在括号之间添加 "self"(不带引号)。