파이썬(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__ 메소드를 활용하면 함수처럼 사용할 수 있습니다.
예를들어 다음과 같은 방법으로 활용해 볼 수 있습니다.