python包私有变量__all__

python类,专栏总目录

1.python面向对象编程class

2.python类多重继承

3.python类私有变量

4.python包私有变量__all__

5.python类枚举

 

1、python命名约定

1)所谓”内部(Internal)”表示仅模块内可用, 或者, 在类内是保护或私有的;

2)用单下划线(_)开头表示模块变量或函数是protected的(使用import * from时不会包含);

3)用双下划线(__)开头的实例变量或方法表示类内私有;

4)将相关的类和顶级函数放在同一个模块里,没必要限制一个类一个模块;

5)对类名使用大写字母开头的单词(如CapWords, 即Pascal风格), 但是模块名应该用小写加下划线的方式(如lower_with_under.py)。

6)类以C开头,枚举以E开头。

2、__all__

在模块(*.py)中使用意为导出__all__列表里的类、函数、变量等成员,否则将导出模块中所有不以下划线开头(私有)的成员,在模块中使用__all__属性可避免在相互引用时的命名冲突。

 只有在执行语句 from module import * 时,__all__属性才会起作用。此时所有枚举的成员被import,而其他成员被私有化。

主要作用:在第一时间展现了模块的内容大纲,而且也更清晰的提供了外部访问接口。

2.1、在模块(*.py)中使用意为导出__all__列表里的类、函数、变量等成员

modualA.py
#
__all__=["fun1","class1"]
...
#end file modualA.py

使用:

from modualA import *

导入模块modualA里的所有成员(如果定义了__all__那么就导出列表中的所有,否则默认导出不以下划线开头的所有成员)

2.2、在包(假设pkgA,pkgA是一个文件夹)的__init__.py中意为导出包里的模块

# pkgA/__init__.py
from modualA import class1,class2
from modualB import fun1,class3
....

使用:

from pkgA import *

以上语句即执行了pkgA下的__init__.py,导入两个模块,和这两模块下的函数和类。

3.3、私有变量导出

_开头表示保护变量,__开头表示私有变量

私有属性默认是无法导出的,可以通过__all__加入该变量进行导出。

 

参考文章

1、python快速生成注释文档的方法

https://www.cnblogs.com/cookie1026/p/6093188.html

2、python里__all__ 属性分别于模块和包之中的用法

http://blog.csdn.net/nivana999/article/details/39620673

3、 python中模块的__all__属性

http://blog.csdn.net/sxingming/article/details/52903377

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jingbo1801

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值