Подтвердить что ты не робот

Несколько классов в модуле Python

Я очень новичок в Python (я исхожу из фона JAVA), и мне интересно, сможет ли кто-нибудь помочь мне с некоторыми стандартами Python. Это обычная или "правильная" практика поместить несколько классов в модуль? Я работал с Django и начал с учебников, и они поместили свои классы модели базы данных в один и тот же модуль. Это что-то, что обычно делается или я должен придерживаться 1 класса на модуль? Есть ли причина, по которой я буду делать одну над другой?

Надеюсь, что я буду чист, а не универсален. Спасибо всем заранее!

4b9b3361

Ответ 1

Вот полезное эмпирическое правило из того, что я видел в типичных Java-проектах:

Самый нижний пакет в Java должен быть файлом в Python

Что это значит? Если ваш проект Java был организован:

toplevel/
   subproject/
        Foo.java
        Bar.java
   subproject2/
        Baz.java
        Qux.java

Затем ваш проект Python должен выглядеть так:

toplevel/
    subproject.py <-- put class Foo, Bar here
    subproject2.py <-- put class Baz, Qux here

Все, что нужно знать: организация:

  • Не используйте внутренние классы. Просто положите классы в том же модуле
  • По соглашению, вещи, начинающиеся с _, "private"
  • Хорошо иметь "общедоступные переменные"

Ответ 2

Это абсолютно правильно. Функциональные возможности групп модулей. Если эта функциональность реализована в нескольких классах (например, Tree, Node, Leaf), тогда уместно разместить их вместе.

Модуль более тесно связан с пакетом Java, чем с классом Java. Вы также можете реализовать модуль как папку, названную для модуля, с файлом __init__.py внутри (поэтому Python может идентифицировать модуль как таковой, __init__.py также может включать в себя код инициализации и списки классов, функций и подпакеты для экспорта.)

Ответ 3

Если вы сомневаетесь, просто посмотрите на стандартные библиотеки Python:)

Например, стандартный календарный модуль содержит 31 класс. Так что да, это нормально.

Ответ 4

В Python, конечно, нормально. Когда и почему вы выбираете один над другим, отчасти это вопрос вкуса и отчасти конвенция.

Если вы все еще знаете Python и поэтому его соглашения, читайте руководство по стилю, стоит вашего времени.

Ответ 5

Подумайте об этом так.

В java то, что вы пишете, это класс, где в случае Python вы пишете модуль вместо класса. Таким образом, модуль может содержать несколько классов. Всякий раз, когда вы хотите использовать определенный класс, сначала импортируйте соответствующий модуль, а затем вызовите класс для создания объектов.

Вот пример.

Classes.py(это модуль с именем "Классы" )


class MyClass(object):  


    def greet(self):
        print("Hello World")


class MyNextClass(object):

    def greetAgain(self):
        print("Hello again")

Теперь я могу импортировать этот модуль из любого места, где пожелаю


import Classes

if __name__ == '__main__':

    a=Classes.MyClass()
    a.greet()

    b=Classes.MyNextClass()
    b.greetAgain()