python - 使用包在多个模块之间拆分 Python 类

标签 python

我在 python 中编写了一些代码作为一个类,但现在我正在尝试将其作为一个包进行分发,但我在弄清楚不同部分应该如何组合在一起时遇到了一些麻烦。

因此,在我最初编写代码时,我有一个类,其中包含一些函数,包括一个 __init__ 函数。现在,我已将这些函数中的每一个拆分到自己的文件中,该文件以函数名称命名,但我不确定将 init 函数放在哪里,因为它需要参数。下面是一个例子。

原始格式:

class className(object):

    def __init__(self, arg1, arg2):
         self.arg1 = arg1
         self.arg2 = arg2

    def func1(self):

    def func2(self, arg3):

使用:

import name

a = name.className(arg1, arg2)
a.func1()
a.func2(arg3)

现在文件树是:

Name/
    /className
        __init__.py
        func1.py
        func2.py

然后包括其他功能。我想保持与原来相同的基本使用模式。

现在,我的问题是 __init__ 函数应该放在哪里?在 __init__.py 文件中?别的地方?另一个问题是我想在 __init__.py 文件中添加一些导入;我知道它们应该放在 __init__.py 文件中,但我不知道它们与 __init__ 函数有什么关系。任何帮助表示赞赏。

最佳答案

您不能将一个类拆分到多个文件中。一个包应该包含多个模块,这些模块是包含代码(完整的类、函数等)的文件。

__init__.py 文件在导入包时运行(尽管它很少用于实际执行大量代码)并告诉 Python 该目录是一个包,它不是类。

包(文件夹)应该是包和模块的集合,而模块(文件)应该是代码的集合。

普通层次结构的示例:

- somepackage (Folder)
    - __init__.py (File)
    - somemodule.py (File)
        - SomeClass (Code)
        - some_function (Code)

最后一点,我说你不能将一个类拆分到多个文件中 - 从技术上讲,你可以通过猴子将函数修补到类中或其他一些类似的怪异行为来做到这一点,但你永远不想这样做,因为它会模糊不清你的代码很多。

关于python - 使用包在多个模块之间拆分 Python 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13215386/

相关文章:

python - 使用 Django 找不到页面 (404)

python - 使用 curve_fit 限制高斯拟合

python - 输出到文件时遇到问题

python - 复合应用程序路由问题

python - 将索引显示为 Pandas 图的 xticks

python - 在使用 python-pptx 创建演示文稿和插入图片时,如何获取图片占位符的尺寸以调整图像大小?

python - 定义 numpy 索引数组

python - 提取 Nx3 数组的特定行,每列都满足条件

python - TypeError : mean() got an unexpected keyword argument 'dtype' # Pandas. 数据帧

Python BeautifulSoup,解析 XML