带下划线的方法和非带下划线的方法有什么区别,特别是 dir() 方法列出的方法

  • 本文关键字:方法 下划线 dir 特别是 区别 python methods
  • 更新时间 :
  • 英文 :


在python中使用dir()方法时,为什么返回的一些方法都用下划线括起来?我应该使用这些方法吗?

例如,dir([1,2,3,4,5,6])返回:

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

这些方法中的最后九种是常规使用的方法。

当我检查文档时,我对这些方法的内容知之甚少:

如果对象具有名为 __dir__() 的方法,则将调用此方法,并且必须返回属性列表。这允许实现自定义 __getattr__() 或 __getattribute__() 函数的对象自定义 dir() 报告其属性的方式。

谢谢。

与其他语言(Java,C++)不同,Python中没有"私有"方法(即不能在定义它们的类之外调用的方法)。因此,任何调用方都可以从任何对象调用内部方法。
通常,您不应该调用对象的这些方法,以避免类程序员无法预测的不需要的后果。

最新更新