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

时间:2015-12-03 16:47:16

标签: python object module

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

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

来自&#34; war.py&#34;:

import deck

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

来自&#34; deck.py&#34;:

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")

运行&#34; war.py,&#34; test2()工作和打印&#34;你好&#34;。 d.test()不起作用,并给出上述错误。我该如何解决这个问题?

从长远来看,我希望在其他&#34;纸牌游戏课程中使用Deck课程&#34;所以我不需要不断改写它。我想简单地导入Deck并使用它,所以如果我做错了,请告诉我!

1 个答案:

答案 0 :(得分:2)

没有找到Deck类,因为它不在您当前的名称空间中。要使用它,您需要使用模块名称来引用它。您对test2函数有同样的问题。将war.py更改为如下所示:

import deck

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

您将遇到的另一个错误是您的Deck.test方法并不期望任何参数,但需要。添加&#34; self&#34; (括号之间)(括号内)。