如何避免这种循环依赖?

时间:2015-12-10 00:03:11

标签: python refactoring global-variables

我有一个名为 Controller 的全局(非类)python模块,它导入 ClassA ClassB 以进行实例化。我还在 ClassA ClassB 中导入控制器以更新全局变量。

from Controller import setElement
from Tkinter import *

ClassA(object):
    def __init__(self):
        root = Tk()
        setElement("Oval")
        root.mainloop()

ClassB(object):
    def __init__(self):
        root = Tk()
        setElement("Round")
        root.mainloop()
from subclasses import ClassA, ClassB

_element = None

def setElement(element):
    _element = element
    check()

def check():
    if _element == "Round":
         instance = ClassA

    elif _element == "Oval":
         instance = ClassB

因此有一种非常简单的方法可以重构它。我不想将全局变量移动到新文件中,然后在变量发生变化时使用while true循环进行检查。我读过关于观察者的内容,但我认为(希望)有一种更简单的方法。

1 个答案:

答案 0 :(得分:0)

怎么回合

def check():
    if _element == "Round":
         instance = __import__("ClassA")

    elif _element == "Oval":
         instance = __import__("ClassB")

并摆脱顶部的导入?