В чем разница между функцией, несвязанным методом и связанным методом?

Я задаю этот вопрос из-за обсуждения в ветке комментариев этого ответа . Я на 90% справился с этим.

In [1]: class A(object):  # class named 'A'
  ...:     def f1(self): pass
  ...:
In [2]: a = A()  # an instance

f1существует в трех различных формах:

In [3]: a.f1  # a bound method
Out[3]: >
In [4]: A.f1  # an unbound method
Out[4]: 
In [5]: a.__dict__['f1']  # doesn't exist
KeyError: 'f1'
In [6]: A.__dict__['f1']  # a function
Out[6]: 

В чем разница между объектами связанного метода , несвязанного метода и функции , все из которых описываются f1? Как назвать эти три объекта? Как они могут трансформироваться друг в друга? Документацию по этому вопросу довольно сложно понять.

57
задан Benjamin Hodgson 22 August 2018 в 22:49
поделиться