12장 연습 문제 6번

오랫만에 쓰는 python 글이다.... 클래스 부분의 내용이 너무 길어서 읽느라 지쳐서 진도가 느렸다.

어쨌든 이번 문제는 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 을 튜플로 넘기도록 했다.

댓글 없음:

댓글 쓰기