有没有一种简单的方法可以将多个文件视为单个脚本?

时间:2017-07-01 15:37:52

标签: python import circular-reference

我正在使用Python(使用Pycharm)编写一个程序,其中大约一半的代码由类和函数占用。该程序现在很长,它写在一个文件中。 如果我可以将类,函数和其余代码分成3个单独的文件,那么将节省大量时间。目前我不能这样做,因为循环导入,这导致语句“来自FunctionDocument import *”在主文档中写入时不起作用。

我知道循环进口是不专业且不受推荐的。但是对我来说,为什么不能简单地添加一行或两行来指示Python处理3个单独的文件就好像它们都写在一个文件中一样 - 如果它们彼此依赖,那就没有意义了。

我知道这可以通过重写代码使其成为非循环来解决,创建Viritual环境也可以解决问题。但是真的没有别的办法吗?

1 个答案:

答案 0 :(得分:1)

如果您有循环引用,则可能是解决方案设计存在潜在问题。我的建议是模块化您的设计。

您不应考虑将代码分区为任意数量的文件(例如,3),而是创建模块文件夹,分隔__init__.py个文件以初始化每个模块并为每个类分隔文件。首先,拥有许多小文件似乎很麻烦,但你很快就会发现这种方法有多可维护。

重新定义循环依赖关系,您可能会遇到类之间的依赖关系问题。类不应该相互依赖。依赖性应该是单向的。例如,Dog可以通过扩展它来依赖Animal。但是动物不能参考狗类。这并不意味着它无法与之协作。例如,通过使用Dog类中定义的方法。

减少类之间依赖关系的主要工具之一是duck typing。您不需要导入类来使用其方法。如果将对象作为参数传递给方法,则可以在不知道其类的情况下向该对象发送消息。

This是关于构建Python项目的好文章。如果您遵循这种方法,您将很快发现代码清晰度和提高生产力的改进。

相关问题