在编写python模块及其中的函数时,我有一些“公开”函数应该向外界公开,但还有一些其他“私有”函数只能在本地和内部查看和使用。
我了解在python中没有绝对私有函数。但是,区分“公共”功能和“私人”功能的最佳,最简洁或最常用的样式是什么?
我列出了一些我知道的样式:
__all__
在模块文件中使用以指示其“公共”功能(python __all__模块级别变量的作用是什么?)- 在“私有”函数名称的开头使用下划线
人们还有其他想法或约定吗?
非常感谢你!
在编写python模块及其中的函数时,我有一些“公开”函数应该向外界公开,但还有一些其他“私有”函数只能在本地和内部查看和使用。
我了解在python中没有绝对私有函数。但是,区分“公共”功能和“私人”功能的最佳,最简洁或最常用的样式是什么?
我列出了一些我知道的样式:
__all__
在模块文件中使用以指示其“公共”功能(python __all__模块级别变量的作用是什么?)人们还有其他想法或约定吗?
非常感谢你!
Answers:
从Python的Class模块文档中:
Python中不存在只能从对象内部访问的“私有”实例变量。但是,大多数Python代码遵循一个约定:以下划线开头的名称(例如_spam)应被视为API的非公开部分(无论是函数,方法还是数据成员) 。它应被视为实现细节,如有更改,恕不另行通知。
由于存在类专用成员的有效用例(即避免名称与子类定义的名称发生名称冲突),因此对这种称为名称处理的机制的支持有限。形式为__spam的任何标识符(至少两个前导下划线,至多一个下划线)在文本上被_classname__spam替换,其中classname是当前类名,前导下划线被去除。只要不存在标识符的语法位置,就可以进行这种改写,只要它出现在类的定义内即可。