When using the dir() method in python, why are some of the methods I am returned with surrounded with underscores? Am I supposed to use these methods?
For Example, dir([1,2,3,4,5,6]) returns:
['__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']
The last nine of these methods are the ones which are conventionally used.
When I check the documentation, I see very little in regards to what these methods are:

If the object has a method named __dir__(), this method will be called and must return the list of attributes. This allows objects that implement a custom __getattr__() or __getattribute__() function to customize the way dir() reports their attributes.

Thank you.
Differently form other languages (Java, C++), there are no "private" methods in Python (i.e. methods that cannot be called outside of the class that defines them). So, any caller can call internal methods from any object.
Conventionally, you should not call those methods of an object, to avoid unwanted consequences not predicted by the class' programmer.
What is the difference between underscored methods and non-underscored methods, specifically those that are listed by the dir() method?