Структура кода Python для организации классов - PullRequest
0 голосов
/ 01 февраля 2019

В Java код структурирован в пакеты с каждым классом в отдельном файле.Есть ли подобная практика в питоне?Лучше ли иметь каждый класс в отдельном файле Python и импортировать их друг другу, или я должен просто сбросить свой код (все мои классы) в один файл?

Ответы [ 4 ]

0 голосов
/ 01 февраля 2019

Это зависит от варианта использования / того, как вы хотите структурировать свой код / ​​приложение.

Вот первая выдержка из документации классов :

По сравнению с другими языками программирования, механизм классов Python добавляет классы с минимумом нового синтаксиса и семантики.Это смесь механизмов классов, найденных в C++ и Modula-3.Классы Python предоставляют все стандартные функции Object Oriented Программирование: механизм наследования классов допускает несколько базовых классов, производный класс может переопределять любые методы своего базового класса или классов, а метод может вызывать методБазовый класс с тем же именем.Объекты могут содержать произвольные количества и виды данных. Как и для модулей, классы обладают динамической природой Python : они создаются во время выполнения и могут быть изменены в дальнейшем после создания.

В основном в Python: «Всеэто объект " кашель , включая классы.

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

class ApplicationError(Exception):
    pass

class LoadingError(Exception):
    pass

class ValidationError(ApplicationError):
    pass

Примерно так можно поместить в файл, напримерerrors.py

Или если у вас есть класс, который переопределяет другой, например:

class Dog:
    def __init__(self, name, weight):
        self.name = name
        self.weight = weight

    def bark():
        return("Bark")

class Chihuahua(Dog):

    def bite_ankles():
        return("Pain")

Примерно так может быть в одном файле с именем breeds.py.

ЧтоЯ сейчас сделал, по сути, 2 модуля Python , которые помогают разбить приложение Python на куски размера кусочка.

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

В Python есть способ поместить определения в файл и использовать их в сценарии или винтерактивный экземпляр переводчика.Такой файл называется модулем;определения из модуля можно импортировать в другие модули или в основной модуль (набор переменных, к которым у вас есть доступ в скрипте, выполняемом на верхнем уровне и в режиме калькулятора) .

Модуль - это файл, содержащий определения и операторы Python. Имя файла - это имя модуля с добавленным суффиксом .py.

В некоторых случаях используются несколько классов и определений.в одном файле может быть удобно, но это зависит от того, как вы планируете структурировать свой проект.Конечно, вы можете поместить весь свой код в один файл, но это сложно управлять и идет вразрез с Zen of Python"Читаемость рассчитывает".

0 голосов
/ 01 февраля 2019

Когда вы структурируете свой код на Python, полезно мыслить в терминах пространств имен (сопоставление имен с объектами): https://docs.python.org/3/tutorial/classes.html.Затем вы можете организовать свой код (в зависимости от его сложности) в модули (файл, содержащий определения и операторы Python), а затем пакеты (способ структурирования пространства имен модулей Python с помощью «точечных имен модулей»): https://docs.python.org/3/tutorial/modules.html

0 голосов
/ 01 февраля 2019

По умолчанию python не создает один файл для каждого класса в файле кода.

Чтобы создать отдельный файл для каждого класса, его код каждого класса должен быть в отдельном файле

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

Если у одного родительского класса есть много дочерних классов, а у дочернего класса очень мало кода,лучше положить в один файл.

0 голосов
/ 01 февраля 2019

В Java код структурирован в пакеты с каждым классом в отдельном файле.Есть ли подобная практика в питоне?

Определенно нет.На самом деле, Python не заставляет вас помещать весь ваш код в классы - обычные функции тоже хороши - так что даже предпосылка «каждого класса» не имеет смысла.

Лучше иметькаждый класс в отдельном файле Python

Определенно нет, либо - ваш код станет просто кошмаром для обслуживания.

или я должен просто сбросить свой код (все моиклассы) в одном файле?

Ни то, ни другое (если это не очень маленькое приложение).Вы хотите перегруппировать свой код (функции, классы и т. Д.) В сплоченные, разъединенные модули / пакеты, что в любом случае является известным передовым опытом для всех языков.Если у вас есть «полное» приложение с кодом домена, постоянством и пользовательским интерфейсом, вы, вероятно, захотите использовать его в качестве пакетов первого уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...