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 内のコンストラクターを参照していますか?
EDIT(2): 自分自身を解決しました。コンストラクターは、少なくとも 1 つのパラメーター (それ自体への参照) を受け取ることができる必要があります。簡単な修正。この問題は解決したようです!
編集(最終):これは素晴らしいです- import sys および sys.path.append 行を切り取ることができ、このインスタンスでも引き続き機能します。素晴らしい。