페이지

2022년 8월 6일 토요일

2-2 Function 클래스 구현

 그러면 [그림2-1]의 함수를 프로그래밍 관점에서 생각해봅시다. 구체적으로는, 앞서 구현한 Variable인스턴슬르 변수로 다룰 수 있는 함수를 Function 클래스로 구현합니다. 여기서 주의할 점은 다음 두 가지입니다.

1) Function 클래스는 Variable인스턴스를 입력받아 Variable인스턴스를 출력합니다.

2) Variable 인스턴스의 실제 데이터는 인스턴스 변수인 data에 있습니다.

이 두 가지에 유의하여 Function 클래스를 다음과 같이 구현 합니다.

class Function:
  def __call__(selfinput):
    x = input.data # 데이터를 꺼낸다.
    y = x ** 2 #실제 계산
    output = Variable(y) # Variable 형태로 되돌린다.
    return output

__call__ 메서드의 인수 input은 Variable 인스턴스라고 가정합니다. 따라서 실제 데이터는 input.data에 존재합니다. 데이터를 커낸 후 원하는 계산(여기서는 제곱)을 하고, 결과를  Variable이라는 '상자'에 담아 돌려 줍니다.

__call__메서드는 파이썬의 특수 메서드입니다. 이 메서드를 정의하면 f = Function()형태로 함수의 인스턴스를 변수 f에 대입해주고, 나중에 f(...)형태로 __call__ 메서드를 호출할 수 있습니다.

댓글 없음: