Python的“私人”功能编码约定(Python “private” function coding

2019-07-20 10:40发布

当它编写Python模块和功能,我有一个应该被暴露给外人一些“公共”的功能,但可以看出和本地和国内使用的只应该另外一些“私人”的职能。

我明白在python没有绝对的私有函数。 但是,什么是最好的,最整齐的,或最常用的样式区分“公共”功能和“私”的功能呢?

我列出了一些我知道的样式:

  1. 使用__all__在模块文件,以表明其“公共”功能( 什么是对蟒蛇__all__模块级变量? )
  2. 使用下划线以“私人”功能名的开头

是否有任何其他想法或约定的人使用?

非常感谢你!

Answer 1:

从Python的类模块文件:

不能从除对象内访问私有”实例变量不会在Python存在。 然而,存在其后面是最Python代码约定:以下划线前缀(例如_spam)应被视为该API的非公共部分(无论它是一个函数,方法或数据成员)的名称。 它应该被视为一个实现细节,如有更改恕不另行通知。

由于有一个有效的用例为类私有成员(即避免与子类定义的名称名称的名称冲突),有这样一个机制的支持有限,叫名字改编。 形式__spam的任何标识符(至少两个前导下划线,至多一个结尾下划线)的文本上与_classname__spam,classname即当前的类名剥离前导下划线(一个或多个)所取代。 这种混淆不关于标识符的语法位置来完成,只要它一类的定义内发生。



文章来源: Python “private” function coding convention