파이썬 2.7.2를 사용하고 있습니다. 함수 호출과 함수의 __call__
특성 호출 사이의 관계를 이해하고 싶습니다. 예를 들어, 네 개의 선이 기능 foo
호출을 표시하는 것 다음 코드를파이썬 함수와 그 __call__ 속성
def foo():
return 5
print foo() # ==> 5
print foo.__call__() # ==> 5
foo.__call__ = lambda : 6
print foo() # ==> 5
print foo.__call__() # ==> 6
최초를 고려하는 것은 foo
의 __call__
속성을 호출하는 것과 동일합니다. 그러나 마지막 세 줄은 __call__
특성을 변경 한 이후 다른 짐승임을 나타내지 만 foo()
이라는 호출에서 반환 된 값은 변경되지 않았습니다.
누군가 foo()
을 호출하고 foo.__call__()
을 호출하는 관계를 설명 할 수 있습니까? foo()
과 foo.__call__()
이 5 대신 6을 반환하도록 함수의 동작을 수정하는 방법이 있습니까?
'foo .__ call__'을 (를) 수정해야하는 이유는 없습니다. 대신'foo'를 수정할 수 있습니다! – katrielalex
그럼에도 불구하고 그것은 이상한 행동입니다. 좋은 질문이 있습니다. –