4

我在 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__函数有何关系。任何帮助表示赞赏。

4

1 回答 1

9

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

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

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

正常层次结构的示例:

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

最后一点,我说你不能将一个类拆分到多个文件中——从技术上讲,你可以通过将函数修补到类中或其他一些奇怪的方法来做到这一点,但你永远不会想要这样做,因为它会掩盖你的代码很多。

于 2012-11-04T02:06:24.053 回答