使用下划线为私有类添加前缀是一种约定吗?

can*_*dry 8 python

我见过函数/常量以下划线为前缀的代码.我的理解是,这表明它们不能直接使用.我可以用课程吗?

class _Foo(object):
    pass

class __Bar(object):
    pass
Run Code Online (Sandbox Code Playgroud)

glg*_*lgl 7

最好只使用一个_.这表示名称在模块中是私有的.

它不是全部导入的from <module> import *,它还有一些其他功能,如"首选破坏".

这里:

如果__all__未定义,则公共名称集包括在模块命名空间中找到的所有名称,这些名称不以下划线字符(' _')开头.

这里:

从版本1.5开始,Python保证在删除其他全局变量之前,从其模块中删除名称以单个下划线开头的全局变量.

双下划线的起始类成员是名称错误的.


Woo*_*ble 5

是; 对于内部使用的类,PEP8认可单个下划线用法.

我不相信双下划线用法在大多数情况下会产生任何实际效果,因为它用于激活类属性的名称修改,并且通常一个类不是另一个类的属性(被授予,它可以是,在哪种情况下,Python会很乐意为你命名.)