3
我正在写一个Python包,看起来像这样:无法实例Python类,即使它被导入
|- datum/
|- __init__.py
|- database.py
__init__.py
from .database import Database
def connect(url):
print(Database) # for debugging
return Database(url)
database.py
class Database(object):
def __init__(self, url):
self.url = url
...more methods
这是安装好的作为开发模式中称为datum
的包。如果我叫connect
像外面这个包的:
import datum
db = datum.connect('postgresql://xxx')
...这是输出:
<class 'datum.database.Database'>
Traceback (most recent call last):
File "Z:\AIS\Flask\ais\engine\scripts\load_pwd_parcels.py", line 30, in <module>
source_db = Database(source_db_url)
NameError: name 'Database' is not defined
我很困惑,因为该类正在导入精 - 我可以打印和甚至运行dir
就可以看到我的所有方法 - 但是当我尝试实例化它的“未定义”时。有谁知道我在这里做错了吗?
'load_pwd_parcels.py'相对于'datum'目录存储在哪里? – chepner
它在一个单独的包(一个Flask应用程序)。 – Rob
你确定你正在导入一个具有'Database'类的'datum'版本吗?您的问题中没有足够的信息来重现问题。 – chepner