原文地址:Difference between _, __ and xx in Python

_

Python中不存在真正的私有方法。为了实现类似于 c++ 中私有方法,可以在类的方法或属性前加一个“_”单下划线,意味着该方法或属性不应该去调用,它并不属于API。

__

这个双下划线更会造成更多混乱,但它并不是用来标识一个方法或属性是私有的,真正作用是用来避免子类覆盖其内容。即 在创建一个以"__"两个下划线开始的方法时,这意味着这个方法不能被重写,它只允许在该类的内部中使用。

__xx__

__xx__ 经常是操作符或本地函数调用的magic methods。

1
2
3
4
5
6
>>> name = "igor" 
>>> name.__len__() 4
>>> len(name) 4
>>> number = 10
>>> number.__add__(20) 30
>>> number + 20 3

总结

  • 使用 _ 来表示该方法或属性是私有的,不属于API;
  • 当创建一个用于 python 调用或一些特殊情况时,使用__xx__
  • 使用__ 来避免子类的重写;