python中单下划线和双下划线的意义
发布日期:2021-05-14 15:19:22 浏览次数:20 分类:精选文章

本文共 1876 字,大约阅读时间需要 6 分钟。

Python 单下划线和双下划线的意义

单下划线的含义

在Python中,单下划线 `_` 通常用作命名的前导符。它并没有在语言层面上赋予变量、类或方法真正的私有属性保护机制。虽然这种命名习惯可以让其他开发者了解某些属性或方法是私有的,但语言本身并不强制执行私有属性的保护。因此,私有属性仍然可以被外部访问或修改。

例如,在类中使用前导单下划线定义的属性,如 `_myprivate`,只能是对其他开发者一个暗示,表示这些属性应被视为私有。但实际上,其他代码仍然可以通过直接访问或修改这些属性。

值得注意的是,`_` 在命名中还有其他用途。例如,可以用来避免与保留关键字(如 `class`)冲突,或者用作一些特殊的魔法方法(如 `__init__`)的前置或后置符时使用的替代符。

双下划线的含义

双下划线 `__` 在Python中有多层含义,具体用途取决于其中下划线的位置和出现场景:

1. 前导双下划线

前导双下划线用于在命名中避免与 Python 内置的特殊属性或魔法方法产生冲突。例如,在类中定义一个具有前导双下划线的属性 `__bool__`,会被改写为 `_ClassName__bool__`,以避免与 Python 内置的 `__bool__` 属性冲突。这种机制允许开发者通过自定义命名创建特定的类属性,同时不依赖于继承或其他复杂的机制。

这种命名方式广泛用于类的私有属性和方法,并且在类之间避免命名冲突。例如,如果父类 `MyClass` 定义了 `__superprivate = "Hello"`,子类 `MySubClass` 中使用相同双下划线命名的属性会被自动转换为 `_MySubClass__superprivate`,从而防止父类和子类之间的属性冲突。

2. 后置双下划线

在魔法方法的命名中,双下划线只出现在前置。例如,`__init__` 是 Python 解释器专用的方法,表示类的初始化。在命名中,双下划线只在前面或同时出现在前后(如 `__init__` 或 `__eq__`),不会出现在后面。因此,命名中后面的双下划线并不符合 Python 的命名惯例。

3. 兆ือง双下划线用于魔法方法和特殊属性

在 Python 中,大部分内置的魔法方法和属性(如 `__import__` 或 `__file__`)都使用双下划线作为前导符。这是为了区别用户自定义的命名和 Python 内置的属性,确保不会产生命名冲突。例如,`__import__` 是一个内置魔法方法,由 Python 解释器直接调用,而不会与用户定义的 `import` 函数冲突。

双下划线的用途总结

    -
    前导双下划线:用于指定类或命名中的私有属性或方法,避免与内置属性冲突。 -
    命名惯例:Python 内置的魔法方法(如 `__init__`)使用双下划线作为前导符。 -
    避免保留关键字冲突:可以用于避免与 Python 保留的关键字命名冲突。

示例解析

以下示例展示了前导单下划线和双下划线在实际代码中的应用:

class MyClass:
def __init__(self):
self.__superprivate = "Hello"
self._semiprivate = ", world!"
def __add__(self, new_str):
return " ".join([self.__superprivate, new_str])

当创建 `MyClass` 实例时,`__superprivate` 被改写为 `_MyClass__superprivate`,而 `_semiprivate` 则保持不变。此外,`__add__` 是一个魔法方法,当使用 `mc + "xxx"` 调用时,Python 会自动调用 `mc.__add__("xxx")`。

注意事项

    - Python 并不严格执行私有属性保护。私有属性仍然可以被外部访问或修改。 - 使用前导双下划线命名的属性会被自动改写,以防止与子类中的相同符号冲突。 - 在命名中使用双下划线的方式不仅是编程规范的选择,还反映了 Python 可扩展性的设计理念。

总之,理解 Python 中单下划线和双下划线的含义对于编写更清晰、更符合规范的代码非常重要。虽然这些符号并不能真正实现私有属性保护,但它们提供了一种便捷的命名方式,帮助开发者管理代码的私有逻辑和避免命名冲突。

上一篇:pycharm快捷键
下一篇:Axure的下载和安装

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月26日 18时54分02秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章