美文网首页
`__all__` 的使用

`__all__` 的使用

作者: 四月白绵羊 | 来源:发表于2020-07-19 21:19 被阅读0次

    __all__ 的使用并不会改变一个package 所暴露的方法和变量,例如在grocery package中,有以下的 __init__.py 文件:

    def get_bread():
        print('A bread.')
    
    def get_coffee():
        print('A cup of coffee.')
    
    def get_milk():
        print('Some milk.')
    
    __all__ = ['get_bread', 'get_coffee']
    

    你依然可以使用 from grocery import get_milk 获取 get_milk 方法.
    __all__ 的唯一影响是当你使用 wild import 的时候:from grocery import *,只会导入 __all__ 数组中包含的内容。换言之,使用 from grocery import * 时,get_milk 是不会被引入的。

    同时也要注意,不要在 __all__ 数组中包含没有定义的函数或变量。如果在 __all__ 数组中包含没有定义的函数或变量,使用 import grocery 并不会出错(因为只会导入定义了的方法和变量)。但是使用 from grocery import * 时会出现未定义的错误。

    所以 __all__ 和python中的私有方法实现一样,都是约定俗成的协议。约定好了 __all__ 中声明的内容就是 public api

    相关文章

      网友评论

          本文标题:`__all__` 的使用

          本文链接:https://www.haomeiwen.com/subject/cmgrkktx.html