当在其中编写python模块和函数时,我有一些应该暴露给外人的“公共”函数,但是其他一些“私有”函数只能在本地和内部看到和使用。 / p>
我理解在python中没有绝对的私有函数。但区分“公共”功能和“私人”功能的最佳,最整洁或最常用的风格是什么?
我列出了一些我认识的样式:
__all__
来表示其“公共”功能(What's the python __all__ module level variable for?)人们使用其他任何想法或惯例吗?
非常感谢!
答案 0 :(得分:85)
来自Python的Class模块文档:
Python中不存在除对象内部之外无法访问的私有“实例变量”。但是,大多数Python代码都遵循一个约定:前缀为下划线的名称(例如_spam)应被视为API的非公共部分(无论是函数,方法还是数据成员) 。它应被视为实施细节,如有更改,恕不另行通知。
由于类私有成员有一个有效的用例(即为了避免名称与子类定义的名称冲突),对这种称为名称修改的机制的支持有限。形式__spam的任何标识符(至少两个前导下划线,最多一个尾随下划线)在文本上用_classname__spam替换,其中classname是当前类名,其中前导下划线被剥离。只要它出现在类的定义中,就可以在不考虑标识符的句法位置的情况下完成这种修改。