You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python类私有属性应使用_还是__作为前缀?

Python类私有属性前缀的通用约定

首选方案是单下划线_开头,这是Python社区一致认可的内部属性标记方式,具体原因如下:

  • 这是PEP8明确规定的命名规范:单下划线前缀的类成员/模块成员,代表该成员属于内部实现细节,对外不保证兼容性,不应该被外部直接调用。所有主流Python开源项目都遵循这一约定,其他Python开发者看到_开头的属性,自然就知道这是类的私有属性,不会随意访问。
  • 双下划线__开头的命名有专门的设计用途,并非用来标记私有属性。Python会对__开头的属性做名称修饰(name mangling),自动将其重命名为_类名__属性名,这一机制的核心作用是避免父类和子类的同名属性产生冲突,而非对外提示私有性。如果用它来标记私有属性,属于对该机制的误用,反而会带来不必要的麻烦:比如子类访问同名属性时会出现意料之外的问题,调试时也需要额外处理重命名后的属性名。

举个简单的示例:

class User:
    def __init__(self, name, password_hash):
        self.name = name # 公共属性,对外可访问
        self._password_hash = password_hash # 内部私有属性,约定外部不要直接读写
        self.__secret_salt = "xxx" # 名称修饰属性,用来避免子类覆盖该属性

Python本身的设计哲学就是“约定大于强制”,不管是_还是__都不能真正阻止外部访问,单下划线的标记方式已经足够明确传递“私有属性,请勿随意访问”的信号,完全满足需求。


内容的提问来源于stack exchange,提问作者Eladtopaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:51:01