0

我有一个我正在尝试编写的名为 dbObject 的类,我正在尝试从不同文件夹中的脚本导入它。我的结构如下:

/var/www/html/py/testobj.py

/var/www/html/py/obj/dbObject.py

/var/www/html/py/obj/__init__.py

现在,__init__.py是一个空文件。以下是 dbObject.py 的内容:

class dbObject:
        def __init__():
                print "Constructor?"

        def test():
                print "Testing"

这是 testobj.py 的内容:

#!/usr/bin/python
import sys
sys.path.append("/var/www/html/py")
import obj.dbObject

db = dbObject()

当我运行它时,我得到:

Traceback (most recent call last):
  File "testobj.py", line 7, in <module>
    db = dbObject()
NameError: name 'dbObject' is not defined

我是 Python 新手,所以我对自己做错了什么感到非常困惑。有人可以指出我正确的方向吗?

编辑:感谢 Martijn Pieters 的回答,我修改了我的 testobj.py 如下:

#!/usr/bin/python
import sys
sys.path.append("/var/www/html/py")
sys.path.append("/var/www/html/py/dev")
from  obj.dbObject import dbObject

db = dbObject()

但是,现在当我运行它时,我收到了这个错误:

Traceback (most recent call last):
  File "testobj.py", line 7, in <module>
    db = dbObject()
TypeError: __init__() takes no arguments (1 given)

这是指我的init .py 还是 dbObject 中的构造函数?

编辑(2):我自己解决了这个问题,构造函数必须能够接受至少一个参数 - 对自身的引用。简单的修复。看来这个问题已经解决了!

编辑(最终):这很好 - 我可以删除 import sys 和 sys.path.append 行,它在这种情况下仍然有效。迷人的。

4

1 回答 1

1

您需要从模块中导入类:

from obj.dbObject import dbObject

这会将类dbObject直接添加到您的本地命名空间。

您的语句import obj.dbObject将名称添加obj到本地命名空间,因此您也可以这样做:

db = obj.dbObject.dbObject()

因为obj.dbObject是你的包目录中的dbObject.py模块。obj

于 2012-10-03T16:55:08.250 回答