Я новичок в python, и я не совсем понимаю __func__ в python 2.7.
Я знаю, когда я определяю класс следующим образом:
class Foo:
def f(self, arg):
print arg
Я могу использовать либо Foo().f('a'), либо Foo.f(Foo(), 'a') для вызова этого метода. Однако этот метод нельзя назвать Foo.f(Foo, 'a'). Но я случайно обнаружил, что могу использовать Foo.f.__func__(Foo, 'a') или даже Foo.f.__func__(1, 'a') для получения того же результата.
Я печатаю значения Foo.f, Foo().f и Foo.f.__func__, и они все разные. Однако в определении есть только один фрагмент кода. Кто может помочь объяснить, как работает код выше, особенно __func__? Теперь я действительно запутался.