Python - структура приложения
Утро,
У меня есть приложение на Python, над которым я работаю.
В настоящее время он состоит из пары файлов, но по мере его увеличения я создаю все больше и больше файлов и верхнюю часть моего основного файла Python, который я делаю
import url_thread
import task_database
import xxxx
import yyyy
и я собираюсь добавить еще один класс сегодня, который является еще одним импорт!
Есть ли способ вставить эти файлы в папку, и просто сделать классы импорта /*
Есть ли лучший способ, которым я должен делать это?
Больше, питон?
3 ответа
Да, вы можете делать то, что вы просите, но это не рекомендуется.
Вы можете создать пакет, содержащий все ваши модули, а затем загрязнить пространство имен, просто импортировав все:
from foo import *
... или лучшим способом было бы создать красиво структурированный пакет модулей и затем явно импортировать их по мере необходимости.
Вы можете сделать пакет и импортировать из него: from mypackage import *
,
Не слушайте все, что люди говорят о "загрязнении пространства имен". Давай и делай from classes import *
, если это удобно для вас (и я верю, что это так), но подумайте об использовании __all__
в вашей упаковке.
Чтобы быть точным, следующая структура папок будет делать это:
classes/
|-- class1.py
|-- class2.py
`-- __init__.py
Добавление файла classes/__init__.py
создает пакет. Это выглядит так:
from class1 import Class1
from class2 import Class2
__all__ = ["Class1", "Class2"]
Обратите внимание на кавычки вокруг имен классов в __all__
,
Затем вы можете использовать пакет в любых ваших скриптах:
>>> from classes import *
>>> Class1
<class classes.class1.Class1 at 0xb781c68c>
>>> Class2
<class classes.class2.Class2 at 0xb781c6ec>
>>> dir()
['Class1', 'Class2', '__builtins__', '__doc__', '__name__', '__package__']
Легко и приятно.