Файл Python называют "модулем", и это - один способ организовать Ваше программное обеспечение так, чтобы это имело "смысл". Другой - каталог, названный "пакетом".
модуль А является отличной вещью, которая может иметь один или две дюжины тесно связанных классов. Прием - то, что модуль - что-то, что Вы импортируете, и Вам нужен тот импорт, чтобы быть совершенно разумными людям, которые будут читать, поддержать и расширить Ваше программное обеспечение.
правило - это: модуль является единицей повторного использования .
Вы не можете легко снова использовать единый класс. Необходимо быть в состоянии снова использовать модуль без любых трудностей. Все в Вашей библиотеке (и все Вы загружаете и добавляете) является или модулем или пакетом модулей.
, Например, Вы работаете над чем-то, что читает электронные таблицы, делает некоторые вычисления и загружает результаты в базу данных. На что Вы хотите, чтобы Ваша основная программа была похожа?
from ssReader import Reader
from theCalcs import ACalc, AnotherCalc
from theDB import Loader
def main( sourceFileName ):
rdr= Reader( sourceFileName )
c1= ACalc( options )
c2= AnotherCalc( options )
ldr= Loader( parameters )
for myObj in rdr.readAll():
c1.thisOp( myObj )
c2.thatOp( myObj )
ldr.laod( myObj )
Думают об импорте как о способе организовать Ваш код в понятиях или блоках. Точно то, сколько классов находится в каждом импорте, не имеет значения. То, что имеет значение, является полной организацией, которую Вы изображаете с Вашим import
операторы.
Я бы использовал паттерн фасада здесь: в библиотеке выставьте общедоступный метод в общедоступном классе, который выполняет инициализацию контейнера (например, простой Initialize ()
) и используйте Castle Windsor только внутри библиотеки, чтобы клиенты библиотеки даже не знали, что вы используете его.