Jaka jest różnica między funkcją, metodą niezwiązaną i metodą powiązaną?
Zadaję to pytanie z powodu dyskusji na temat komentarza dota odpowiedź. Jestem w 90% na drodze do tego, by nadrobić głowę.
In [1]: class A(object): # class named 'A'
...: def f1(self): pass
...:
In [2]: a = A() # an instance
f1
istnieje w trzech różnych formach:
In [3]: a.f1 # a bound method
Out[3]: <bound method a.f1 of <__main__.A object at 0x039BE870>>
In [4]: A.f1 # an unbound method
Out[4]: <unbound method A.f1>
In [5]: a.__dict__['f1'] # doesn't exist
KeyError: 'f1'
In [6]: A.__dict__['f1'] # a function
Out[6]: <function __main__.f1>
Jaka jest różnica międzymetoda związana, metoda niezwiązana ifunkcjonować obiekty, z których wszystkie są opisane przez f1? Jak nazwać te trzy obiekty? Jak mogą się wzajemnie przekształcać? Thedokumentacja w tej sprawie jest dość trudno zrozumieć.