我有一个我正在尝试编写的类,名为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行,它仍然适用于此实例。可爱。
答案 0 :(得分:1)
您需要从模块中导入类:
from obj.dbObject import dbObject
这会将类dbObject
直接添加到您的本地命名空间。
您的语句import obj.dbObject
将名称obj
添加到本地命名空间,因此您也可以这样做:
db = obj.dbObject.dbObject()
因为obj.dbObject
是dbObject.py
包目录中的obj
模块。