【发布时间】:2021-03-20 20:40:42
【问题描述】:
我似乎遗漏了一些基本的 Python 概念,这些概念非常简单,以至于没有人谈论它。对于可能使用不正确的描述,我提前道歉 - 我可能没有足够的知识来正确地提出问题。
这是我遇到的一个概念上的死胡同:
我有一个 Class Net 实例,它处理通过 Internet 与某些事物进行通信。 我有一个 Class Process 的实例,它进行大量的处理和数据管理 我有一个 GUI 类的实例,它处理 GUI。
Gui 实例需要访问 Net 和 Process 实例,因为来自其小部件的回调会调用这些方法等。 Net 和 Process 实例需要访问 Gui 实例的一些方法,因为它们偶尔需要显示内容(它在做什么、查询结果等)
我如何管理它以便这些东西相互交流?继承不起作用 - 我需要实例,而不是类。此外,继承是一种方式,而不是两种方式。 我显然可以实例化 Gui,然后在实例化时将其(作为对象)传递给其他人。但是 Gui 将不知道 Process 和 Net 实例。我当然可以在创建后手动将 Net 和 Process 实例传递给 Gui 实例,但这似乎是一种 hack,而不是正确的做法。此外,随着所涉及的对象数量的增加,我必须手动传递的相互依赖的数量增长得相当快(几乎是阶乘?) - 所以我认为这不是正确的策略。
在用正常功能尝试了同样的事情后,我到达了这个死胡同,在那里我更舒服。由于它们的大小,类似分组的函数存在于单独的模块中,同样是 Net、Gui 和 Process。问题完全一样。 “父”模块导入“子”模块,然后可以调用它们的方法。但是子模块如何调用父模块的方法,又如何调用彼此的方法呢?让所有东西都导入一切似乎充满了危险,并且随着更多对象的参与似乎再次爆发。
那么我在组织我遇到这个问题的代码时缺少什么,而显然所有其他 python 用户都没有?
【问题讨论】:
-
这能回答你的问题吗? Using global variables between files?