我在python中的gitlab API库中工作.它最初是作为一个宠物项目来了解更多有关模块的内容,因此我在开始时没有考虑它,并开始在模块目录中的__init__.py中编写所有代码.
当然,现在也就是不断壮大,我可以看到,该组织是相当差,有办法不多方法为一类,测试已经变得困难,检查代码是相当混乱,因为很多在那里.
所以我想把它分成几个子模块,你知道X import Y的代码,所以代码更易读,可测试,更小但是我发现我完全不知道如何实现它,因为我有很多共享变量和所有使用类变量的所有方法一样在整个类....
那么,有没有关于用"子模块"创建python模块的好文档?如何在类之间共享对象变量?例如,我应该检查哪些明确的模块有一个子模块的登录和其他子模块的功能?
干杯!
一般来说,这被称为“重构”。如果您寻找的话,这里有很多优秀的 Python 和通用计算机科学文献。
根据您的描述,听起来您需要停止直接使用类中存储的数据并开始使用成员函数进行访问。
class A(object):
def __init__(self, value):
self.value = value
a = A(1)
print a.value
a.value = 5
print a.value
Run Code Online (Sandbox Code Playgroud)
看看我是如何直接修改value的?这可能会导致代码中出现各种假设。您最好使用方法来检索值并进行更改。注意,盲目的 getFoo/setFoo 也是不好的。尝试让你的方法暴露行为而不是扭曲的旋钮。
class A(object):
def __init__(self, value):
self.value = value
def is_safe(self):
if value > 10:
return False
return True
def increase_value(self, increment):
if increment <= 0:
raise ValueError("only positive increments are allowed")
self.value += increment
Run Code Online (Sandbox Code Playgroud)
看看逻辑是如何自包含的?我们永远不希望 A 的实例变小,因此我们只允许增量并将函数命名为increase 来表明这一点。setValue没有说明什么或为什么。
至于模块和子模块,将匹配的东西分组在一起。“匹配”是基于您自己的代码的需要。所有的用户功能?所有的数据库功能?将内容放入模块中可以使用相同的公开 API 插入不同的模块。考虑来自 SQL DB 或本地文本文件的身份验证。
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |