Я новичок в 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__
? Теперь я действительно запутался.