I have a basic question on how a method call really works in Python. I found this post and this one that are helpful, but not answering all my questions.
Basically, my understanding from Section 9.3.4 of Python documentation is that:
When an instance object calls its method, a search is done on the class object. If the matching function is found, the function object attached to the class object is called with the instance object as its first parameter.
My main questions are:
What is the significance of bound methods? Currently, a call to method is transferred to a call to function with the instance object as its first argument enabling the function to access the instance object. Why has Python adopted this approach, instead of each method directly processing its bound instance object? Any cons and pros for each of these approaches?
Can a bound method theoretically lead to a lower performance (slower execution), in case that a large number of instances call their own method simultaneously, which is seemingly equivalent to calling one single function object multiple times (in a serial fashion??) with different instances as the first argument per call?
I know I am missing some fundamentals here, and I would be grateful if anyone could please advise. Thank you for your time.