下划线方法和非下划线方法之间有什么区别,特别是那些由dir()方法列出的方法?

时间:2017-01-18 16:37:27

标签: 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()报告其属性的方式。

谢谢。

1 个答案:

答案 0 :(得分:2)

不同于其他语言(Java,C ++),没有"私有" Python中的方法(即不能在定义它们的类之外调用的方法)。因此,任何调用者都可以从任何对象调用内部方法 按照惯例,您不应该调用对象的那些方法,以避免类别未预测到的不必要的后果。程序员。