Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python2.7避免循环导入_Python - Fatal编程技术网

Python2.7避免循环导入

Python2.7避免循环导入,python,Python,我有两个文件:Server.py和DBManger.py 我通过启动server.py来启动项目,在get\u answer函数中的客户端请求下,我调用DBManager类中的Login函数。 如果登录被批准,我想调用静态add\u online\u user功能。 现在,当我尝试执行此操作时,会出现此错误: Traceback (most recent call last): File "K:/Python/Spotify/Server/Server.py", line 6, in <

我有两个文件:
Server.py
DBManger.py

我通过启动
server.py
来启动项目,在
get\u answer
函数中的客户端请求下,我调用
DBManager
类中的
Login
函数。
如果登录被批准,我想调用静态
add\u online\u user
功能。
现在,当我尝试执行此操作时,会出现此错误:

Traceback (most recent call last):
  File "K:/Python/Spotify/Server/Server.py", line 6, in <module>
    import DBManager
  File "K:\Python\Spotify\Server\DBManager.py", line 4, in <module>
    import Server
  File "K:\Python\Spotify\Server\Server.py", line 156, in <module>
    db = DBManager.DataManager()
AttributeError: 'module' object has no attribute 'DataManager'
DBManager.py
code: 问题:
如何避免这种循环导入?似乎我无法单独解决此问题…

为什么需要将DataManager导入服务器。py?server.py正在初始化DataManager并创建其实例,以便连接到服务器的客户端可以请求数据库的输入,您可以在
get\u answer
功能中看到此操作
import DBManager

def get_answer(data, sock):
    global db, online_users
    actions = {"LG": lambda *x: db.login(sock, *x),
               }
    param = json.loads(data[3:])
    param = [str(x) if type(x) == unicode else x for x in param]
    return json.dumps(actions[data[:2]](*param))

@staticmethod
def add_online_user(socket, username):
    global online_users
    if socket not in online_users:
        online_users.update({socket: username})
        print str(socket.getsockname()) + "is now login as: " + username

db = DBManager.DataManager()
import Server

class DataManager:
   def login(self, sock, username, password):
        # doing someting...
        if approved:
                Server.add_online_user(sock, username)
                return True
        return False