我的(简化)项目布局如下:
/__init__.py
/test.py
/lib/__init__.py
/lib/client.py
我的test.py
只是:
import lib.client
A = client()
A.Test()
我的lib\client.py
开头如下:
import ui #(another class in the lib dir)
class client(object):
"""
(Blah)
"""
UI = None
def __init__():
UI = ui()
def Test():
print "Success"
当我尝试运行test.py时,我可以进入代码并看到客户端中的定义被解析,但是,当我到达实例化客户端的行时,我得到以下异常:
NameError: name 'client' is not defined
如果我将该行更改为:
A = lib.client()
然后我得到
'module' object is not callable
我错过了什么?
答案 0 :(得分:3)
lib.client
之后的import lib.client
对象是模块,而不是类。要实例化类,需要在模块对象中调用该类:
A = lib.client.client()
或者,正如@rantanplan所说,从模块中导入类
from lib.client import client
A = client()
答案 1 :(得分:3)
我只知道你以Java
的方式进行导入。
在python中执行:
import lib.client
您没有提供该模块中的所有定义。你刚才
使实际模块可用 - client.py
所以要么像现在一样保留导入方案,要么
import lib.client
A = lib.client.client()
或
from lib.client import client
A = client()
另外,我建议你用大写的camelcase命名你的python类 即
class Client(object):
因为它是python惯例。