【Python】单下划线(_)和双下线的约定意义

在Python中,单下划线(_)和双下划线(__)有着不同的约定意义。

单下划线:

  • 用于指示变量或函数是用于内部使用的,但这并不是强制性的。例如,在类中,以单下划线开头的属性或方法表明它们是意图在类内部使用的。
  • 在模块中,以单下划线开头的函数表示它们不应该被从其他地方导入。根据PEP-8风格指南,_single_leading_underscore表示弱“内部使用”指示符。

双下划线(名称改编):

  • 在Python文档中,任何形式为__spam的标识符(至少两个前导下划线,最多一个后缀下划线)在文本上会被替换为_classname__spam,其中classname是当前类名,前导下划线被去除。这种改编是不考虑标识符的语法位置的,因此它可以用来定义类私有的实例变量和类变量、方法、存储在全局变量中的变量,甚至存储在实例中的变量。
  • 这种名称改编的目的主要是为了避免意外;它仍然允许有决心的人访问或修改被认为是私有的变量。

例如:

class MyClass():
    def __init__(self):
        self.__superprivate = "Hello"
        self._semiprivate = ", world!"

mc = MyClass()
# 下面的代码会引发错误,因为属性名被改编了
# print(mc.__superprivate)
# 正确的访问方式是
print(mc._MyClass__superprivate)  # 输出: Hello
print(mc._semiprivate)            # 输出: , world!

双下划线用于内置方法,如__init__、__bool__等。这些是Python的特殊方法,通常不用于普通属性或方法的命名。

原文链接:,转发请注明来源!