Python 前缀后缀的单双下划线

17 阅读1分钟

python 里面到底是什么

下面把咱们今天聊过的全部内容按出现顺序打包成一张“速查地图”,你复制保存即可当备忘录。


1. 三种“看起来像”的方法

写法是否特殊方法自动调用时机本质用途
__repr__repr(obj) / 交互式回显官方内置的默认方法,魔法方法
repr__只能手动 obj.repr__()普通函数,名字巧合
__repr手动 obj._Cls__repr()普通函数,被 name-mangling

2. 名称改写(name-mangling)规则

  • 仅对类内部__xxx 开头且结尾无双下划线的标识符生效。
  • 自动替换成 _ClassName__xxx,防止子类意外覆盖。
  • 不是“绝对隐藏”,只是“改名”

3. 访问控制“下划线约定”

前缀是否改名外部可见性语义
单下划线 _x可见“受保护”,靠约定
双下划线 __x_Cls__x“私有”,靠机制
首尾双下划线 __x__可见Python 保留的“魔术”成员,不要自己发明

4. 类内部方法格式速记

  • 实例方法:第一个参数必须是 self
  • 类方法:@classmethod + cls
  • 静态方法:@staticmethod 无隐含参数。
  • 命名:小写 + 下划线(snake_case);私有用 __xxx

5. 真正把成员“藏起来”的套路

  1. __xxx 让名字被改写。
  2. 类定义结束后 delattr(cls, 'xxx') 从类字典抹掉。
  3. 封装 @hidden 装饰器(示例已给)可一键删除。

6. @property 全家桶

装饰器作用
@property把方法变成“只读属性”
@xxx.setter添加可写逻辑
@xxx.deleter添加可删逻辑
内部赋值务必用私有变量 _x 避免递归