Python - структура приложения - PullRequest
2 голосов
/ 11 декабря 2010

Утро,

У меня есть приложение на Python, над которым я работаю.

В настоящее время оно состоит из пары файлов, но по мере увеличения я создаю все больше и больше файлов иначало моего основного файла Python я делаю

import url_thread
import task_database
import xxxx
import yyyy

и собираюсь добавить еще один класс сегодня, который является еще одним импорт!

Есть ли способ вставить эти файлы Py впапку, и просто сделайте импорт классов / *

Есть ли лучший способ, которым я должен сделать это?

Более того, pythonic?

Ответы [ 3 ]

1 голос
/ 12 декабря 2010

да, вы можете делать то, что просите, но это не рекомендуется.

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

from foo import *

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

0 голосов
/ 12 декабря 2010

Не слушайте все, что люди говорят о "загрязнении пространства имен".Продолжайте и сделайте 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__']

Красиво и просто.

0 голосов
/ 11 декабря 2010

Вы можете сделать пакет и импортировать из него: from mypackage import *.

...