Сколько классов я должен вставить один файл? [закрытый]

264
задан martineau 17 December 2017 в 15:42
поделиться

4 ответа

Файл 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 операторы.

318
ответ дан S.Lott 23 November 2019 в 02:29
поделиться

С тех пор нет никакого искусственного предела, это действительно зависит от того, что понятно. Если у Вас есть набор довольно коротких, простых классов, которые логически группируются, бросают в наборе их. Если у Вас есть большие, сложные классы или классы, которые не имеют смысла как группы, пойдите один файл в классе. Или выберите что-то промежуточное. Осуществите рефакторинг, когда вещи изменяются.

37
ответ дан Chris Upchurch 23 November 2019 в 02:29
поделиться

Это полностью зависит от того, насколько большой проект, какой длины классы, если они будут использоваться из других файлов и так далее.

, Например, я довольно часто использую серию классов для абстракции данных - таким образом, у меня может быть 4 или 5 классов, которые могут только быть 1 строкой долго (class SomeData: pass).

было бы глупо разделить каждый из них в отдельные файлы - но так как они могут использоваться из различных файлов, помещая все они в отдельном data_model.py, файл имел бы смысл, таким образом, я могу сделать from mypackage.data_model import SomeData, SomeSubData

, Если у Вас есть класс с большим количеством кода в нем, возможно, с некоторыми функциями только это использует, это была бы хорошая идея разделить этот класс и функции помощника в отдельный файл.

необходимо структурировать их так, Вы делаете from mypackage.database.schema import MyModel, не from mypackage.email.errors import MyDatabaseModel - если, куда Вы импортируете вещи из, имеют смысл, и файлы не являются десятками тысяч строк долго, Вы организовали его правильно.

документация Модулей Python имеет немного полезной информации об организации пакетов.

13
ответ дан dbr 23 November 2019 в 02:29
поделиться

Я сказал бы для помещения стольких классов, сколько может быть логически сгруппирован в том файле, не делая его слишком большим и сложным.

5
ответ дан Jason Baker 23 November 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: