同一文件中函数的循环依赖性 python
Circular dependencies python for functions in same file
我的代码结构是这样的:-
def send_message(msg):
print msg + "\n"
x.new_message("You",msg)
class GUI(Frame):
def createWidgets(self):
self.input.bind('<Key-Return>',self.send)
def send(self, event):
send_message(self.contents.get())
self.contents.set("")
def new_message(self,sender, msg):
line = sender+": "+msg+"\n"
self.chat.contents.set(self.chat.contents.get()+line)
def __init__(self):
self.createWidgets()
x = GUI()
如您所见,这有一些循环依赖。函数 send_message 需要实例 x 以及 GUI 的 new_message 方法。 GUI 定义需要 send_message。因此不可能满足所有约束条件。怎么办?
Python 函数中的名称在定义函数时不需要引用任何内容 - 只有在实际调用函数时才会查找它们。因此,您的 send_message()
完全可以(尽管将 x
设为参数而不是全局变量可能会更好)。
您的 GUI
class 将无法如图所示实例化,因为您没有显示小部件的创建 - 例如 self.input
。我不知道有多少是因为你为了发布而剥离了代码。
在您在评论中显示的完整代码中,我们可以看到您在 GUI.__init__
中调用了 self.mainloop()
。这将启动 gui 的事件处理,并且可能在程序完成之前不会终止。只有这样作业 x = GUI()
才会完成并且 x
可用。
要避免这种情况,您有多种选择。通常在 __init__
中进行无限循环可能不是一个好主意。而是在实例化 GUI 后调用 mainloop()
。
def __init__(self):
# only do init
x = GUI()
x.mainloop()
正如 jasonharper 在 python 中所说,函数中的变量仅在您执行该函数时查找,而不是在定义它们时查找。因此,运行时的循环依赖在大多数情况下在 python.
中不是问题
我的代码结构是这样的:-
def send_message(msg):
print msg + "\n"
x.new_message("You",msg)
class GUI(Frame):
def createWidgets(self):
self.input.bind('<Key-Return>',self.send)
def send(self, event):
send_message(self.contents.get())
self.contents.set("")
def new_message(self,sender, msg):
line = sender+": "+msg+"\n"
self.chat.contents.set(self.chat.contents.get()+line)
def __init__(self):
self.createWidgets()
x = GUI()
如您所见,这有一些循环依赖。函数 send_message 需要实例 x 以及 GUI 的 new_message 方法。 GUI 定义需要 send_message。因此不可能满足所有约束条件。怎么办?
Python 函数中的名称在定义函数时不需要引用任何内容 - 只有在实际调用函数时才会查找它们。因此,您的 send_message()
完全可以(尽管将 x
设为参数而不是全局变量可能会更好)。
您的 GUI
class 将无法如图所示实例化,因为您没有显示小部件的创建 - 例如 self.input
。我不知道有多少是因为你为了发布而剥离了代码。
在您在评论中显示的完整代码中,我们可以看到您在 GUI.__init__
中调用了 self.mainloop()
。这将启动 gui 的事件处理,并且可能在程序完成之前不会终止。只有这样作业 x = GUI()
才会完成并且 x
可用。
要避免这种情况,您有多种选择。通常在 __init__
中进行无限循环可能不是一个好主意。而是在实例化 GUI 后调用 mainloop()
。
def __init__(self):
# only do init
x = GUI()
x.mainloop()
正如 jasonharper 在 python 中所说,函数中的变量仅在您执行该函数时查找,而不是在定义它们时查找。因此,运行时的循环依赖在大多数情况下在 python.
中不是问题