В Java статический интерфейс/класс позволяет интерфейсу/классу использоваться как класс верхнего уровня, то есть, это может быть объявлено другими классами. Так, можно сделать:
class Bob
{
void FuncA ()
{
Foo.Bar foobar;
}
}
Без помех, вышеупомянутому не удалось бы скомпилировать. Преимущество для этого состоит в том, что Вам не нужен новый исходный файл только для объявления интерфейса. Это также визуально связывает интерфейс Bar к классу Foo, так как необходимо записать Foo. Панель и подразумевает, что класс Foo делает что-то с экземплярами Foo. Панель.
Фактически, вы можете импортировать модуль с недопустимым именем. Но для этого вам нужно использовать imp
, например, если файл называется models.admin.py
, вы можете использовать
import imp
with open('models.admin.py', 'rb') as fp:
models_admin = imp.load_module(
'models_admin', fp, 'models.admin.py',
('.py', 'rb', imp.PY_SOURCE)
)
Но прочтите документацию на imp. find_module
и imp.load_module
, прежде чем вы начнете его использовать.
Файл называется models / admin.py
. ( Источник )
То есть он должен называться admin.py
в каталоге под названием models
.
Затем вы можете импортировать, используя ] из models.admin import *
, предполагая, что он находится в вашем пути Python.
Если вы действительно хотите, вы можете импортировать модуль с необычным именем файла (например, имя файла, содержащее '.' Перед '.py'), используя Модуль imp:
>>> import imp
>>> a_b = imp.load_source('a.b', 'a.b.py')
>>> a_b.x
"I was defined in a.b.py!"
Однако, как правило, это плохая идея. Более вероятно, что вы пытаетесь использовать пакеты, и в этом случае вам следует создать каталог с именем «a», содержащий файл с именем «b.py»; а затем "import ab" загрузит файл / b.py.
Нет, вы не можете импортировать файл python как модуль, если его имя содержит точку (или вопросительный знак, или восклицательный знак и т. Д.). Имя модуля python (не включая .py) должно быть действительным именем python (т.е. может использоваться как имя переменной).
Вы не ссылаетесь на файлы в операторе импорта, вы ссылаетесь на модули и пакеты .
Прочтите ] docs , они очень ясны по этому поводу.
В любом случае, поскольку вы используете django, обычный подход не сработает. Ну, я действительно не знаю, что имеет в виду спрашивающий, когда он упоминает администратора, и связано ли это с интерфейсом администратора django. Мои доводы остаются в силе.