어쨌든 이번 문제는 Counter 클래스를 설계하는 문제이다.
먼저, 가) ~ 라) 까지의 조건을 만족하는 클래스를 설계 해보면 아래와 같다.
class Counter() : def __init__(self, i = 0) : self.count = i self.step = 1 def incr(self) : self.count += self.step def __str__(self) : return str(self.count) def __repr__(self) : return `self.count`그리고 마) 의 조건을 만족시키는 클래스를 만들기 위해 __call__ 메소드를 추가해보면
def __call__(self) : self.incr() print self.count가 될 수 있겠다. 문제에서 c() 를 실행시키면 count 값이 증가되도록 했기 때문에 아마도 incr() 를 호출한 것을 의미하는 것 같다. 따라서 self.incr() 메소드를 호출하도록 했다.
마지막으로 바) 의 조건을 만족시키도록 메소드를 추가해보면
def __coerce__(self, other) : return self.count, other와 같이 작성해볼 수 있다. __coerce__ 메소드는 리턴 값이 두 개의 값을 갖는 튜플이거나 None 객체이어야 한다.
따라서 여기서는 계산될 수 있는 두 개의 튜플을 넘기면 되므로 self.count 값과 다른 수인 other 을 튜플로 넘기도록 했다.
댓글 없음:
댓글 쓰기