在Python类中,函数名以下划线(_)和双下划线(__)开头有什么区别?
以下划线开头的函数(如 `_function`)表示这是一个“受保护的”成员,意在供内部使用。虽然这只是一个约定,并不能强制限制访问,但它提示开发者该方法不应被类的外部直接调用。
双下划线开头的函数(如 `__function`)会触发名称改写(name mangling),Python会在运行时将其名称改为 `_ClassName__function`,以此避免子类意外覆盖该方法。这种机制主要用于实现“私有”成员,但同样不是绝对的安全屏障,因为可以通过改写后的名称访问。
此外,以双下划线开头和结尾的方法(如 `__init__`)是特殊方法,由Python内部调用,用户不应直接调用它们。
总结:单下划线表示受保护,双下划线用于私有并触发名称改写,而双下划线前后则是特殊方法。