Python имеет два основных способа импорта контента. Модули и пакеты.
Модуль - это просто файл python по пути включения: order.py
Если order.py определяет класс с именем foo , то доступ к этому классу может быть получен с помощью:
import order
o = order.foo()
Чтобы использовать синтаксис из оригинального вопроса, вам необходимо убедиться, что ваш файл model.py имеет следующие атрибуты: [client, staff, order]
Однако это обычно означает размещение их в одном файле. Которого вы пытаетесь избежать.
Пакет - это каталог с __ init __. Py внутри него. init .py инициализирует пакет (т. Е. Он запускается при первом импорте), и в этом каталоге вы можете иметь модули или подпакеты.
model
__init__.py
client.py
staff.py
order.py
Таким образом, чтобы получить доступ к любому из подмодулей, вы просто сказали бы:
import model.client
Однако это просто импорт модуля. Он не импортирует никаких атрибутов модуля. Таким образом, чтобы получить доступ к классу внутри модуля, вам нужно указать его:
import model.client
o = model.client.clientclass()
Это немного утомительно, но очень хорошо организовано.
Лучшее из двух (где производительность не имеет большого значения):
Если вы введете следующий код в __ init __. Py :
from .client import clientclass as client
from .staff import staffclass as staff
from .order import orderclass as order
Затем вы автоматически загрузили все свои классы, и к ним можно получить доступ как:
import model
c = model.client()
s = model.staff()
o = model.order()
В конце концов, может быть проще придерживаться немагического способа сделать это:
import model.client
o = model.client.clientclass()
- Gahooa