加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

将python模块拆分为子模块的正确方法是什么?

发布时间:2020-12-16 21:37:21 所属栏目:Python 来源:网络整理
导读:我在 python中的gitlab API库中工作.它最初是作为一个宠物项目来了解更多有关模块的内容,因此我在开始时没有考虑它,并开始在模块目录中的__init__.py中编写所有代码. 当然,现在已经增长了,我可以看到组织很差,一个类有很多方法,测试变得困难,检查代码很混乱,
我在 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

看看我如何直接修改值?这可能导致代码中的各种假设.使用方法检索值并进行更改最好.注意,没有头脑的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

看看逻辑是如何自包含的?我们从不希望A的实例变小,所以我们只允许增量并命名函数增加来指示这一点. setValue不告诉什么或为什么.

对于模块和子模块,将事物组合在一起. “匹配”基于您自己的代码需求.所有的用户功能?所有数据库功能?将内容放入模块中可以使用相同的公开API插入不同的模块.从SQL DB或本地文本文件中考虑身份验证.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读