1
ruanimal 2023-06-20 11:04:03 +08:00
不会划分模块就别划分,都写一个文件得了
模块之间的逻辑关系理清楚,不要父亲指向儿子,儿子又指向父亲。。 |
3
fgwmlhdkkkw 2023-06-20 11:15:29 +08:00
可以把 import 写到函数里面……😓
|
4
ruanimal 2023-06-20 11:17:26 +08:00
@maxssy 因为 Python 没有编译流程,所以类似 Java 或者 c 那样划分文件很容易出现循环依赖。
比如 基类在 base.py, 子类在 child_a.py child_b.py, 如果在 base.py 注册所有子类,就循环依赖了。 如果在子类模块中注册子类到 base.py 就没有问题(在 child_a.py 中调用 base.py 的方法进行注册)。 |
5
lambdaq 2023-06-20 11:18:20 +08:00
在函数里引用 又不是不能用。就这样搞吧。反而还能。。。提升初次启动速度。。。
|
6
lambdaq 2023-06-20 11:20:11 +08:00
|
8
ruanimal 2023-06-20 11:27:31 +08:00
还有个场景,写 Java 的一般单例用的比较多,这些类的关系如果没梳理好也容易循环依赖
|
9
enrolls 2023-06-20 12:03:18 +08:00
- 使用__init__.py 的时候,要注意(没掌握就留白)
- 下层(基类)不要引用上层(子类) - 使用绝对 import 而不要相对 import - 主要包的命名(譬如, 叫 abc.py 或者 redis.py ,可能就有 import 问题 |
10
itskingname 2023-06-20 12:17:16 +08:00 4
1. 代码文件尽量展平,不要有 Java 那种深层文件夹嵌套。类似于 aa/bb/cc/dd/ee/ff/gg.java 这种深层嵌套,在 Python 里面就是屎一样的结构。
2. 调用遵循从外到内的方式。入口文件应该在最外面。例如根目录下面有一个 main.py 作为入口文件。其他被调用的文件可以放到子文件夹里面。Java 把入口文件放到一个很深的嵌套子文件夹里面的写法在 Python 中就是垃圾写法。 3. 在上层文件中引入下层文件。或者同层文件之间引用。不要出现从下层文件引用上层文件的情况。如果出现了,你就应该把这个被公用的函数或者类抽出来,单独放到一个文件中。 4. utils.py 这种工具函数、工具类的文件。里面只应该引用如下三种情况:Python 自带的库、第三方库、其他工具文件中的类或函数。 不应该出现工具文件中引用业务代码里面某个函数的情况。 |
11
maxssy OP @itskingname 学到了, 谢谢
|
12
ClericPy 2023-06-20 18:38:17 +08:00
代码结构设计有问题啊...
遇到互相引用的还是单独开一个工厂模块之类的, 构造的时候把需要的对象传递到工厂方法里去. 还有很多其他方案就不一一细说了 |