使用嵌套模块

时间:2016-09-18 17:30:34

标签: python python-3.x

我已将程序拆分为三个脚本。其中之一,' classes.py',是一个定义我需要的所有类的模块。另一个是一种设置模块,称之为“setup.py”,它实例化了来自“class.py”的很多对象。 (它只是一堆带有一些for循环,没有函数或类的变量赋值)。它有很多字符串和我不想看到的东西,当我正在处理程序本身的第三个脚本时,即实际执行上述所有操作的脚本。

我让这个工作的唯一方法是在' setup.py'中添加。脚本:

from classes import *

这使我可以在设置文件中快速编写,而无需在任何地方添加命名空间。并且,在主要脚本中:

import setup

这具有PyCharm的优点,可以为类和方法提供完整的代码完成,这很好。

我想要实现的是让主脚本导入类,然后使用两个简单的命令运行安装脚本来创建我需要的对象。但我无法将类脚本导入主脚本,因为安装脚本无法执行任何操作,没有类定义。我应该将类导入两个脚本,还是完全做其他事情?

1 个答案:

答案 0 :(得分:0)

导入每个文件。考虑this SO post。从Fooz先生的回答那里,

  

每个模块都有自己的命名空间。因此,对于boo.py来看外部模块的东西,boo.py必须自己导入它。

     

可以编写一种语言,其中命名空间按照您期望的方式堆叠:这称为动态范围。一些语言,如原始的lisp,早期版本的perl,postscript等,确实使用(或支持)动态范围。

     

大多数语言都使用词法作用域。事实证明,这是一种更好的语言工作方式:这样一个模块可以根据自己的代码推断它的工作方式,而不必担心它是如何被调用的。

     

有关其他详细信息,请参阅此文章:http://en.wikipedia.org/wiki/Scope_%28programming%29

直观地说,这也感觉更好,因为您可以立即(在文件本身中)查看代码具有哪些依赖关系 - 这将使您能够更好地理解您的代码,一个月甚至一年后。