【问题标题】:Is there a way to import multiple modules under one alias?有没有办法在一个别名下导入多个模块?
【发布时间】:2019-05-01 17:50:07
【问题描述】:

我正在尝试在一个别名下导入多个库文件,而不使用 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 中运行时导入错误。

提前致谢。

【问题讨论】:

    标签: python ros


    【解决方案1】:

    没有。

    脚本中的一个符号不能同时引用多个模块。

    无论如何,为不同的模块使用不同的名称是一种更简洁的方法。 您可以尝试使用通配符导入让您的生活更轻松

    from foo.a import *
    from foo.b import *
    from foo.c import *
    
    fn1()
    fn2()
    fn3()
    

    但这最终会污染您的命名空间。我不会推荐它。

    【讨论】:

    • 不,我更喜欢使用 a.fn1() 等.. 方法。无论如何谢谢。如果您知道一种让 ROS 真正使用 init 级别导入的方法,那将是很棒的 XD。
    • 在您的__init__.py 中您可以尝试使用__all__ 导出函数符号:stackoverflow.com/questions/44834/…
    【解决方案2】:

    你也可以试试(不推荐*):

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

    【讨论】:

      猜你喜欢
      • 2017-06-12
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      • 2013-09-27
      • 2023-02-25
      • 2018-10-14
      • 2020-06-08
      相关资源
      最近更新 更多