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

史蒂文德苏

基本设定

假设我要创建一个名为的类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条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

从模块中导入具有其名称的子模块

来自分类Dev

包导入会创建一个模块,子模块仍可导入

来自分类Dev

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

来自分类Dev

理念。在另一个模块中导入模块

来自分类Dev

从另一个导入子模块

来自分类Dev

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

来自分类Dev

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

来自分类Dev

从包中导入所有模块

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Ruby-包括两个模块,两个模块都具有一个具有相同名称的子模块

来自分类Dev

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

来自分类Dev

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

来自分类Dev

避免在导入的模块中导入模块

来自分类Dev

从另一个包导入python模块

来自分类Dev

从另一个包导入python模块

来自分类Dev

当两个子模块都在同一主模块中时,从另一个子模块访问该子模块

来自分类Dev

从另一个本身导入不可用模块的文件中导入函数?

来自分类Dev

在父目录中导入另一个模块的模块的运行单元测试失败

来自分类Dev

Python找不到在另一个模块中导入的模块

来自分类Dev

是否可以从另一个包中导入节点包?

来自分类Dev

为什么在一个文件中使用相同的代码导入一个功能,而在另一个文件中导入相同名称的模块呢?

来自分类Dev

为什么当我只有一个公共类和类文件时说我的公共类没有定义

来自分类Dev

从每个实例都有一个私有闭包的模块中导出一个类,但是它的原型链仍然可以扩展吗?

来自分类Dev

使用 Boto3 和 Create_Pipeline 时出现 PipelineActivity 的错误必须只有一个成员

来自分类Dev

PyImport_Import在python模块中导入子模块时失败

来自分类Dev

为什么函数返回一个只有一个成员的列表?

Related 相关文章

  1. 1

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

  2. 2

    从模块中导入具有其名称的子模块

  3. 3

    包导入会创建一个模块,子模块仍可导入

  4. 4

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

  5. 5

    理念。在另一个模块中导入模块

  6. 6

    从另一个导入子模块

  7. 7

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

  8. 8

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

  9. 9

    从包中导入所有模块

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

    Ruby-包括两个模块,两个模块都具有一个具有相同名称的子模块

  14. 14

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

  15. 15

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

  16. 16

    避免在导入的模块中导入模块

  17. 17

    从另一个包导入python模块

  18. 18

    从另一个包导入python模块

  19. 19

    当两个子模块都在同一主模块中时,从另一个子模块访问该子模块

  20. 20

    从另一个本身导入不可用模块的文件中导入函数?

  21. 21

    在父目录中导入另一个模块的模块的运行单元测试失败

  22. 22

    Python找不到在另一个模块中导入的模块

  23. 23

    是否可以从另一个包中导入节点包?

  24. 24

    为什么在一个文件中使用相同的代码导入一个功能,而在另一个文件中导入相同名称的模块呢?

  25. 25

    为什么当我只有一个公共类和类文件时说我的公共类没有定义

  26. 26

    从每个实例都有一个私有闭包的模块中导出一个类,但是它的原型链仍然可以扩展吗?

  27. 27

    使用 Boto3 和 Create_Pipeline 时出现 PipelineActivity 的错误必须只有一个成员

  28. 28

    PyImport_Import在python模块中导入子模块时失败

  29. 29

    为什么函数返回一个只有一个成员的列表?

热门标签

归档