Организация классов Python в модулях и/или пакеты
мне нравится соглашение Java о наличии одного открытого класса на файл, даже если иногда есть веские причины поместить более одного открытого класса в один файл. В моем случае у меня есть варианты реализации одного и того же интерфейса. Но если бы я поместил их в отдельные файлы, у меня были бы избыточные имена в инструкциях импорта (или вводящие в заблуждение имена модулей):
import someConverter.SomeConverter
, тогда как someConverter
будет имя файла (и модуля) и SomeConverter
имя класса. Это выглядит довольно грубовато для меня. Поместить все альтернативные классы в один файл приведет к более значимой инструкции импорта:
import converters.SomeConverter
но я боюсь, что файлы станут довольно большими, если я помещу все связанные классы в один файл модуля. Что такое лучшая практика Python здесь? Является ли один класс на файл необычным?
2 ответа:
многие из них являются личными предпочтениями. Используя модули python, у вас есть возможность хранить каждый класс в отдельном файле и по-прежнему разрешать
import converters.SomeConverter
(илиfrom converters import SomeConverter
)ваша файловая структура может выглядеть примерно так:
* converters - __init__.py - baseconverter.py - someconverter.py - otherconverter.py
и затем в
__init__.py
file:from baseconverter import BaseConverter from otherconverter import OtherConverter
решение Зака ломается на Python 3. Вот фиксированное решение.
многие из них являются личными предпочтениями. Используя модули python, у вас есть возможность хранить каждый класс в отдельном файле и по-прежнему разрешать
import converters.SomeConverter
(илиfrom converters import SomeConverter
)ваша файловая структура может выглядеть примерно так:
* converters - __init__.py - baseconverter.py - someconverter.py - otherconverter.py
и затем в
__init__.py
file:from converters.baseconverter import BaseConverter from converters.otherconverter import OtherConverter