Есть ли способ импортировать несколько модулей под одним псевдонимом? - PullRequest
1 голос
/ 01 мая 2019

Я пытаюсь импортировать несколько библиотечных файлов под одним псевдонимом, без использования файла init .py (потому что он явно не поддерживается ROS).

Пример:

Допустим, у нас есть следующие файлы:

foo/
   __init__.py # This file is empty, used to categorize foo as a package.
   a.py
   b.py
   c.py
bar/
   example.py

a, b и c включают в себя различные функции, которые мне нужны, например, поэтому я импортирую их

#example.py

from foo import a, b, c

a.fn1()
b.fn2()
c.fn3()

Это работает, но есть ли способ, которым я мог бы сгруппировать их всех под одним псевдонимом? Вот так:

#example.py

from foo import [a, b, c] as foo

foo.fn1()
foo.fn2()
foo.fn3()

Опять же, я знаю, что это можно сделать, импортировав их под init .py, но поскольку наша библиотека предназначена для работы под ROS, в настоящее время мы не можем сделать это без завершения импорта. ошибки при работе в нем ROS.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 01 мая 2019

Нет.

Один символ в сценарии не может ссылаться на несколько модулей одновременно.

И использование разных имен для разных модулей в любом случае является гораздо более чистым подходом.Вы можете попытаться сделать вашу жизнь немного проще, используя импорт подстановочных знаков

from foo.a import *
from foo.b import *
from foo.c import *

fn1()
fn2()
fn3()

Но это приводит к загрязнению вашего пространства имен.Я бы не рекомендовал это.

0 голосов
/ 03 мая 2019

Вы также можете попробовать это (* не рекомендуется):

from foo.a import fn1
from foo.b import fn2
from foo.c import fn3

fn1()
fn2()
fn3()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...