python对象找不到属性错误

时间:2014-09-03 22:05:24

标签: python class static attributes

我有一个文件parser.py

class Parser:
    ...
    ...

    @staticmethod
    def someMethod():
        Parser.argsParser.someNewMethod()

文件worker.py

import connection, parser
...
...

class Worker:
    def __init__(self):
        try:
            parsed = parser.Parser()

文件driver.py:

sys.path.append('./lib')
import worker, parser

parser.Parser.someMethod()

现在我的目录结构是

/some/path/driver.py
/some/path/lib/worker.py
/some/path/lib/parser.py

当我运行driver.py时,我得到:

Traceback (most recent call last):
  File "./lib/worker.py", line 13, in __init__
    parsed = parser.Parser()
AttributeError: 'module' object has no attribute 'Parser'
'module' object has no attribute 'Parser'

但是,当我将driver.py复制到./lib并运行时,我没有发现任何问题。谁能指出我发生了什么?

3 个答案:

答案 0 :(得分:1)

有一个名为parser的内置Python模块,它正在导入而不是您的模块。最好的解决方案是不要将您的模块命名为,或者,如果您这样做,请将其放入包中,这样您就不会直接在顶层导入它(即,import mypackage.parser而不是import parser)。

答案 1 :(得分:1)

首先确保lib目录中有__init__.py文件。然后,您可以在driver.py文件中导入Parser类,如下所示:

from lib.parser import Parser

__init__.py文件让python解释器知道该目录将被视为python模块(https://docs.python.org/2/tutorial/modules.html)。

答案 2 :(得分:-1)

正确设置你的PYTHONPATH:

export PYTHONPATH=/some/path:/some/path/lib