【发布时间】:2013-12-11 23:32:01
【问题描述】:
我在 python 中的 gitlab API 库中工作。它最初是作为一个宠物项目来了解更多关于模块的,所以一开始我没有考虑它,而是开始编写模块目录内的 __init__.py 中的所有代码。
当然,现在它已经增长了,我可以看到组织很差,一个类有很多方法,测试变得困难,检查代码很混乱,因为那里有很多.
所以我想把它分成几个子模块,你知道典型的 from X import Y 所以代码更具可读性、可测试性、更小,但我发现我完全不知道如何实现它,因为我有很多共享变量等在整个类中,所有方法都使用类变量......
那么,有没有关于使用“子模块”创建 python 模块的好文档?如何在类之间共享对象变量?例如,我应该检查哪些明确的模块在一个子模块上登录而在另一个子模块上具有功能?
干杯!
【问题讨论】:
-
我认为这个问题不能以目前的形式回答。作为一般提示,首先重写您的函数,使它们没有外部依赖项(共享变量)。对您更有帮助的是提取代码中最有问题的部分并要求code review。
-
@thg435 但是如果他们完全依赖他人呢?比方说,你有一个包,它有一个模块登录和一个模块 dosomething。如果 dosomething 模块需要登录模块成功以便用户生成一个将在 dosomething.getsomething() 中使用的令牌怎么办?
-
Itxaka 那么你没有成功拆分代码。 dosomething 只需要一个令牌。它不在乎它来自哪里。它只需要“成为一个令牌”。这意味着它有 token.valid() 例如。任何尊重界面的东西都有效。这样,您可以测试需要令牌的东西,而无需首先真正进行身份验证。
-
@Itxaka 一个模块可以依赖其他模块来实现它们的特定功能。这就是你首先要模块化代码的原因:以合理的方式划分职责,并且能够在不同的地方重用功能,而不必多次实现它。但是,您不应该修改来自不同函数的相同变量。