2015-01-31 6 views
0

__call__ (python3)의 의미를 이해하려고합니다. 각 방법을 __init__, __call__ 및 테스트 방법을 구분하기 위해 작성했습니다. 내가 왜 __call__를 호출되지는 x.test()을 시작할 때__call__ 클래스 내부에서 메소드를 호출 할 때

#!/usr/bin/python3 

class thara(object): 

    def __init__(self): 
     print("init called") 

    def __call__(self): 
     print("call called") 

    def test(self): 
     print("test called") 

x=thara() ### constructor calling here 
x() ## __call__ calling here 
x.test() ## test method calling here 

제 질문은? 내가 생각하고있는 것은 x.test()가 인스턴스 x()을 시작하면 자동으로 __call__ 메서드를 호출해야한다는 것입니다.하지만 내 출력에 따라 __call__x()을 시작할 때만 호출합니다.

누군가 설명해주십시오. 인스턴스 함수 호출처럼 때

+0

여기서'x.test()'는'__call__'을 (를) 호출 할 것이라고 말했습니까? https://docs.python.org/3.4/reference/datamodel.html#object.__call__ –

+1

관찰 한 행동은 이상적입니다. 왜 당신을 놀라게하는지 더 자세히 설명해주십시오. 또는 당신이 대답으로 받아들이면 : 이것은 바로 그 방법입니다. – 5gon12eder

답변

관련 문제