在模块和/或包中组织Python类
我喜欢每个文件拥有一个公共类的Java约定,即使有时有很好的理由将多个公共类放入单个文件中。 在我的情况下,我有相同的接口的替代实现。 但是,如果我将它们放入单独的文件,我会在导入语句(或误导模块名称)中有多余的名称:
import someConverter.SomeConverter
而someConverter
将是文件(和模块)名称和SomeConverter
类名称。 这对我来说很不雅观。 把所有的替代类放到一个文件中会导致一个更有意义的导入语句:
import converters.SomeConverter
但是如果我把所有的相关类放到一个单独的模块文件中,我担心这些文件会变得很大。 这里的Python最佳实践是什么? 每个文件有一个类是不寻常的?
很多是个人喜好。 使用Python模块,你可以select保持每个类在一个单独的文件,仍然允许import converters.SomeConverter
from converters import SomeConverter
(或from converters import SomeConverter
)
你的文件结构可能看起来像这样:
* converters - __init__.py - baseconverter.py - someconverter.py - otherconverter.py
然后在你的__init__.py
文件中:
from baseconverter import BaseConverter from otherconverter import OtherConverter
Zach的解决scheme打破了Python 3.这是一个固定的解决scheme。
很多是个人喜好。 使用Python模块,你可以select保持每个类在一个单独的文件,仍然允许import converters.SomeConverter
from converters import SomeConverter
(或from converters import SomeConverter
)
你的文件结构可能看起来像这样:
* converters - __init__.py - baseconverter.py - someconverter.py - otherconverter.py
然后在你的__init__.py
文件中:
from converters.baseconverter import BaseConverter from converters.otherconverter import OtherConverter