파이썬(Python)/파이썬 기본

__call__ method의 사용법

Kaya_Alpha 2023. 1. 5. 01:58

__call__ method는 파이썬의 매직 메소드(Magic method) 중 하나입니다.

 

__call__ method는 클래스의 객체도 호출할 수 있도록 만들어주는 메소드 입니다.

 

예를 들어 다음과 같은 클래스를 만들었다고 가정해봅시다.

class Cal:
    def __init__(self):
        self.message = "number : "
        print(self.message)
    
    def __call__(self,a):
        self.n1 = a
        return self.message + str(self.n1**2)

이 클래스의 message라는 변수는 문자열 'number : '로 초기화되며, 이후 해당 문자열을 출력합니다.

__call__ 메소드는 a라는 숫자를 받으면 제곱을 하고 message변수와 합쳐져서 리턴합니다.

 

이제, 위에서 구현한 Cal 클래스를 이용하여 객체를 하나 생성해보겠습니다.

__init__ 변수가 동작함으로써 'number : ' 가 출력된것을 확인할 수 있습니다.

 

다음으로 생성된 객체를 호출하면 __call__메소드가 작동하여 다음과 같은 결과가 나옵니다.

의도한대로 7을 입력하였더니 7의 제곱인 49가 'number : '와 붙어서 출력되었습니다.

 

이렇게 __call__메소드를 이용하면 클래스의 객체인 obj를 호출할 수 있게 되며, 클래스의 다른 메소드를 이용하여 추가적인 동작을 할 수 있도록 설계할 수 있습니다.

 

__call__ 메소드를 구현하지 않는다면?

당연하지만, __call__ 메소드가 없는 경우에 클래스의 객체를 호출하게 되면 에러가 발생합니다.

 

간단한 활용 예시

__call__ 메소드를 활용하면 함수처럼 사용할 수 있습니다.

 

예를들어 다음과 같은 방법으로 활용해 볼 수 있습니다.