一个全模块减少代码耦合性的假设

2014-08-10 09:19:23 +08:00
 blackjam
##### 外部 main.py
import Mod

##### Mod目录下的__init__.py
http://gist.github.com/b177135c5c043e5d5f90

##### Mod目录下的Core.py
#encoding:utf-8
class Core:
""" 提供全局数据和接口 """
pass


例子: https://github.com/codejam1024/SM
3010 次点击
所在节点    Python
5 条回复
datou552211
2014-08-10 10:03:56 +08:00
这很像ruby gem的风格
ritksm
2014-08-10 13:00:21 +08:00
这样做的意义在于什么..

Mod
-- Core
---- __init__.py
---- Http.py
---- SM.py


不是一样的效果?耦合减在哪里
blackjam
2014-08-10 13:21:44 +08:00
@ritksm 外部自动连接全部模块并初始化,更专注的写每个模块
ritksm
2014-08-10 14:01:40 +08:00
要自动连接全部模块的话

from Mod.Core import *

然后Core.__init__.py 里面写好__all__限制一下或者不写也行

初始化你直接在某个模块的里面写,比如Http.py:

def init_http():
pass

init_http()

不就行了么
blackjam
2014-08-10 14:29:58 +08:00
@ritksm Core类似一个空间,main.py导入Mod,Mod的__init__.py自动加载Mod目录下的所有模块并初始化到Core空间里,如Command模块,我在Test模块里调用,只需要from Mod.Core import *添加Core空间,然后Core.Command.CommandAdd("test", HookCommandTest, "test module"),就可以添加一条命令,Command基于Controller模块,这样只要提供好接口功能,则可自由组合模块,如可以把Command模块换成GUI模块

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/127019

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX