从包中导入只有一个公共成员的子模块时,避免名称重复

史蒂文德苏

基本设定

假设我要创建一个名为的类Foo我可以这样创建一个文件:

foo.py

class Foo:
    def __init__(self):
        self.data = "world"
    def print(self):
        print("Hello, " + self.data)

要在我的主脚本中使用此类:

main.py

import foo

test = foo.Foo()
test.print()

foo.Foo()每次实例化该类时都必须键入,这已经足够荒谬了,但是当我想通过将类分成一个包来组织代码时,情况变得更糟:

classes / __ init__.py

# Empty

类/foo.py

# Copy of foo.py, above

main.py

import classes.foo

test = classes.foo.Foo()
test.print()

简单答案

我知道我可以这样使用清理一些from X import Y

from classes.foo import Foo

test = Foo()

首选答案

由于该文件foo.py包含一个名称与该文件相匹配的成员,因此,如果可以执行以下操作,则最好使用:

from classes import Foo
# Or:
import classes.Foo as Foo

test = Foo()

有没有办法做到这一点?也许在我的一些代码__init__.py

亚历克斯·霍尔

在中classes/__init__.py,放入:

from .foo import Foo

现在您可以写了from classes import Foo

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有效地从包的许多子模块中导入名称

从另一个包中导入结构时的私有嵌入式结构

从python 2.7中的包中导入名称,子模块或子包的优先级是什么?

Python:从同一包中导入子模块或子包

无法在同一个包中导入 Python 模块

无法在同一个包中导入 Python 模块

无法从同一个包中导入 python 模块

为什么我不能在同一个模块中导入包?

使用从另一个导入中导入的模块

从另一个导入子模块

无法在子模块中导入软件包

Python 3-在同一目录中导入.py文件-ModuleNotFoundError:没有名为“ __main __。char”的模块;'__main__'不是一个包

从子模块导入Python软件包时避免pylint抱怨

导入模块本身在 Python 中导入另一个模块时遇到问题

如何从不同的子模块导入一个子模块?

带有子模块导入的名称空间

在主页中导入另一个模块

从同一个项目中导入包

在R包中导入一个函数(不带importFrom)

从模块中导入函数的Python导入错误(ModuleNotFoundError),该模块从另一个模块中导入类

导入模块,该模块在Python中导入另一个模块

从包中导入所有模块

如何在XQuery中导入公共模块名称空间

从python中的另一个包中导入一个包

使用子模块时,模块可以与包本身具有相同的名称吗?

如果名称重复,是否只能选择一个子元素?

为什么只有第一个导入的模块有效而其余的不能运行

Python:尝试从导入的包中导入模块时出现“ ModuleNotFoundError”

当模式拥有一个同名的私有名称时,明确引用公共DBLink?