如何使用“as”简写导入嵌套包?
这个问题类似于importing a module in nested packages,只有嵌套在同一个.py文件中,而不是在文件夹中。
在foo.py中(所有python文件都在同一个包中,版本为3.4):
class Foo:
class Bar:
...
我可以在另一个.py文件中访问这些子类:
from . import foo
...
bar = foo.Foo.Bar()
我想做什么:
from . import foo.Foo.Bar as Bar # DOES NOT WORK: "unresolved reference" error.
...
bar = Bar() # saves typing.
bar2 = Bar()
...
有办法做到这一点吗?
答案 0 :(得分:2)
嵌套Python类没什么意义;除了嵌套命名空间之外,没有特别的意义。 很少是否需要这样做。如果您需要生成其他名称空间,请使用模块。
您无法直接导入嵌套类;你只能导入模块全局变量,所以在这种情况下Foo
。您必须导入最外层的类并创建一个新的引用:
from .foo import Foo
Bar = Foo.Bar
del Foo # remove the imported Foo class again from this module globals
del Foo
完全是可选的。上面的内容确实说明了为什么你不想在开始时嵌套类。