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

使用包在多个模块之间拆分Python类,python,Python,我用python作为一个类编写了一些代码,但现在我正试图将其作为一个包分发,我在弄清楚不同部分应该如何组合在一起时遇到了一些问题 因此,当我最初编写代码时,我有一个类,其中包含一些函数,包括\uuuu init\uuu函数。我现在已经将这些函数拆分为自己的文件,文件名为函数名,但是我不确定将init函数放在哪里,因为它需要参数。下面是一个例子 原始格式: class className(object): def __init__(self, arg1, arg2):

我用python作为一个类编写了一些代码,但现在我正试图将其作为一个包分发,我在弄清楚不同部分应该如何组合在一起时遇到了一些问题

因此,当我最初编写代码时,我有一个类,其中包含一些函数,包括
\uuuu init\uuu
函数。我现在已经将这些函数拆分为自己的文件,文件名为函数名,但是我不确定将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
以及其他功能。我想保持原来的基本使用模式


现在,我的问题是
\uuuu init\uuu
函数应该去哪里?在
\uuuu init\uuuuu.py
文件中?其他地方?另一个问题是我想把一些导入放到
\uuuu init\uuuuu.py
文件中;我知道它们应该放在
\uuuu init\uuuu.py
文件中,但我不知道它们与
\uuuu init\uuuu
函数的关系。感谢您的帮助

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

导入包时会运行
\uuuuu init\uuuuuuuuuuuuuupy.py
文件(尽管很少使用它来实际执行大量代码),并告诉Python目录是一个包,而不是类的构造函数

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

正常层次结构的一个示例:

-somepackage(文件夹)
-_uuuinit_uuuuu.py(文件)
-somemodule.py(文件)
-类(代码)
-一些函数(代码)

最后,我要说的是,你不能将一个类拆分为多个文件——从技术上讲,你可以通过在类中添加猴子补丁函数或其他一些奇怪的方法来做到这一点,但你永远不会想这样做,因为这会使你的代码变得模糊。

如果你的类很大,你觉得需要将其拆分为多个文件,您可能想考虑一些重构到单独的类中。实际上,我错误地认识到如何创建包,但我想我现在已经明白了。谢谢,谢谢。这实际上也为我清理了一些其他的事情。