English 中文(简体)
在Python中从父文件调用。
原标题:
  • 时间:2008-12-31 19:14:59
  •  标签:

我有一个名为main.py的文件和一个名为classes.py的文件。

main.py 包含应用程序以及正在发生的事情,而 class.py 包含一些类。

main.py有以下代码

主.py

import classes

def addItem(text):
    print text

myClass = classes.ExampleClass()

然后我们有classes.py。

classes.py (类.py)

class ExampleClass (object):
    def __init__(self):
        addItem( bob )

令人惊讶的是,那不是我正在使用的实际代码,因为我已经剥离了任何会阻碍您看到我想要做的事情的内容。我想要能够从classes.py中的类中调用在main.py中定义的方法。我该如何做到这一点?

提前致谢

最佳回答

我无法像Alex Martelli的帖子那样回答得更好。基本上,无论你尝试何种方法,都会导致麻烦,你最好重新设计代码,以避免两个模块之间的相互依赖...

如果您有两个相互依赖的模块A和B,最简单的方法是将它们都依赖的一部分代码隔离到第三个模块C中,并让它们都导入C。

问题回答

重新设计的建议是好的。如果你必须将文件留在原处,则可以编辑main.py以确保导入文件时不执行任何内容,然后在需要它的函数中导入main:

class ExampleClass (object):
    def __init__(self):
        import main
        main.addItem( bob )

这可以避免循环导入,但与一开始进行重构不太一样。

我建议将常用的函数放在 classes.py 中,或者更好的是放在一个第三方模块 utils.py 中。

你所有可以执行的代码都应该放在一个 if __name__ == "__main__" 的语句之内。这样可以在将它导入为模块时防止被执行。在 main.py 中实现。

if __name__=="__main__":
    myClass = classes.ExampleClass()

然而,正如dF所述,现阶段重构可能比尝试解决循环依赖更好。





相关问题
热门标签