Как правильно импортировать python? - PullRequest
2 голосов
/ 21 апреля 2020

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

PROJECT_FOLDER  
    |__ main.py  
    |__ modules  
         |__ __init__.py  
         |__ Example.py  

Чтобы импортировать мои классы (здесь только один, но обычно больше), я должен импортировать каждый файл один за другим или создать правило "все" в __ init __. py file?

Вот мои идеи:

# Example.py
class Example:
    def __init__(self):
        print('Hello from Example')

Первая идея:

# First version of __init__.py is an empty file
# First version of main.py
from modules.Example import Example

my_example = Example()

Или вторая идея:

# Second version of __init__.py
__all__ = ['Example']
# Second version of main.py
from modules import *

my_example = Example.Example()

Согласно тому, что я прочитал в документации и здесь, лучше избегать использования import *, потому что это может сбить с толку. Но если мне нужно импортировать 56 классов, я должен написать 56 строк, чтобы импортировать мои классы до начала кодирования? И использование import * заставило бы меня написать my_example = Example.Example(), что не красиво и может быть слишком запутанным.

В заключение, лучше ли называть файлы классов именами классов (включая заглавную первую букву )? Я узнал, что это была хорошая практика в PHP, но python, кажется, имеет другое соглашение (случай со змеей), что Pylint всегда рад напомнить мне:)

Спасибо за ваши ответы, есть добрый день!

Ответы [ 2 ]

3 голосов
/ 21 апреля 2020

Есть некоторые общие соглашения, когда дело доходит до импорта в python. import * называется импортом подстановочных знаков, и лучше избегать использования подстановочных знаков независимо от того, какой язык программирования вы используете. если все ваши 56 классов находятся в одном файле, вы импортируете его как from my_file import class_1, class_2, .... Вы можете использовать скобки, чтобы сделать его более чистым, from my_file import (class_1, class_2, class_3, ...), если ваши классы не находятся в одном файле, импортируйте их в init .py, а затем вы можете импортировать все из них в одну строку, как в примере выше. Другое соглашение об импорте в python - всегда начинать с импорта стандартных библиотек, а затем пакетов сторонних производителей и, наконец, ваших собственных модулей. например

import sys

запросы на импорт

из my_package import some_thing

класс в python должен иметь значение CamelCase и для модули разделяют слова подчеркиванием. from MyClassName import my_module

1 голос
/ 21 апреля 2020

Согласно тому, что я прочитал в документации и здесь, лучше избегать использования импорта *, потому что это может сбить с толку.

Это правда. Избегайте import *, если можете.

Но если мне нужно импортировать 56 классов, я должен написать 56 строк для импорта моих классов перед началом кодирования?

Да. Но сколько файлов вы предполагаете, используя 56 классов?

И использование import * заставило бы меня написать my_example = Example.Example (), что не красиво и может сбивать с толку.

Я думаю, вы имеете в виду , а не , используя import *, но есть также синтаксис from module import names, поэтому вы можете использовать from modules.example import Example и использовать my_example = Example().

В заключение, лучше ли называть файлы классов именами классов (включая заглавную первую букву)? Я узнал, что это была хорошая практика в PHP, но python, кажется, имеет другое соглашение (например, случай змеи), что Pylint всегда рад напомнить мне:)

Условно, модули snake_case.py, классы PascalCase, имена переменных и функций snake_case, а константы BIG_SNAKE_CASE.

...