如何将子模块导入父命名空间?

爱德华·内德·哈维

我有一个这样的目录结构:

foo/
    __init__.py
    printsum.py
        '''
        def printsum(x,y):
            print("sum is " + str(x+y))
        '''
bar.py
    '''
    def printsum(x,y):
        print("sum is " + str(x+y))
    '''
example.py
    '''
    #!/usr/bin/env python3
    import foo.printsum
    import bar


    foo.printsum.printsum(1,2)
    bar.printsum(3,4)
    '''

该文件example.py旨在作为脚本运行,而foobar旨在作为导入模块。我想提出的命名空间foo一样bar那就是 - 我不想要 double printsum.printsum我不希望所有的的foo模块将被保存在一个大的整体的文件,像bar.py我希望该foo.printsum()方法本身保存在一个文件中,但我希望printsum()存在于foo.命名空间级别。

这可以以某种方式完成吗?

格莱美

中的函数导入__init__py

foo/__init__py:

from .printsum import printsum

(如果您使用的是 python2,则可能需要删除点或使用完整的导入路径。python 3 中相对导入路径的规则更严格)

然后你可以直接从 foo 调用函数:

import foo
foo.printsum(...)

foo进口将运行__init__如果你想要证明,你也可以在那里添加一些印刷品。这是在包模块中公开功能的一种非常正常的方式。你也可以做 * 导入,但通常不推荐这样做。严格导入您想要公开的内容。

__init__ 换句话说,您可以将东西粘贴到包上,但也可以在导入时进行自动初始化。

还要查找__all__关键字。隐藏与包或模块的用户无关的代码非常有用。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将周转箱作为子模块导入?

来自分类Dev

如何将子模块中的类/函数相互导入?

来自分类Dev

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

来自分类Dev

如何导入 webpack 子模块?

来自分类Dev

如何将PyTorch子模块保持在评估模式?

来自分类Dev

如何将模块导入jsx?

来自分类Dev

如何将模块导入xcode

来自分类Dev

python导入模块全局本地命名空间

来自分类Dev

导入彼此“重载”但保留命名空间的模块

来自分类Dev

如何重命名git子模块

来自分类Dev

如何不在Python模块中导入导入的子模块?

来自分类Dev

如何从git子模块导入python文件

来自分类Dev

Angular 2.0-如何导入子模块?

来自分类Dev

如何将javascript AMD模块导入外部TypeScript模块?

来自分类Dev

如何将修改后的子模块“ git添加”到主模块中?

来自分类Dev

如何将更改从github子模块分支“ A”拉入父模块分支“ B”

来自分类Dev

如何将原型模式引入javascript命名空间

来自分类Dev

如何将ClusterRole PolicyRule限制为命名空间?

来自分类Dev

如何将原型模式引入javascript命名空间

来自分类Dev

Python子模块导入

来自分类Dev

Python子模块导入

来自分类Dev

从入口点导入python模块时如何遵守父日志记录命名空间

来自分类Dev

如何将外部DSC模块导入PowerShell环境?

来自分类Dev

Python:如何将模块ab导入为a_.b?

来自分类Dev

Python:如何将2.7模块导入3.4程序?

来自分类Dev

如何将Scss NPM模块导入Ember

来自分类Dev

如何将Backbone / RequireJS模块导入React / Webpack应用

来自分类Dev

如何将JQuery导入自定义dnn模块

来自分类Dev

如何将 TypeScript 类集中导入 Angular 模块?

Related 相关文章

热门标签

归档