2008년 08월 25일
파이썬 클래스에서의 __call__메소드
파이썬 클래스에서는 __call__메소드가 오버라이드 가능하다.
이 메소드를 오버라이드 하는 순간 그 클래스는 메소드와 클래스의 특성을 모두 가지게 된다.
이 부분이 재미있는데, 파이썬을 사용하는 사람의 입장에서 이 메소드는 다소간의 혼란을 준다.
클래스 인스턴스 자체를 call한다는 것은 어찌보면 편하지만(static메소드 몇개 넣어서 데이터를 초기화 한뒤 클래스를 call해주면 일반적인 메소드보다 알아보기 쉽고 쓰기 쉽게 만들 수도 있다고 생각한다) 객체지향적인 개념으로는 있을 수 없는 일이기 때문이다.
자동차라는 클래스의 람보르기니라는 인스턴스가 '달린다'는 행위를 하지 않고 대신에 '람보르기니'라는 행위를 해버리는 경우와 같기 때문이다. 명사를 동사로써 사용하는, 미쿡인들의 상식적으로 불가능한 경우가 되겠다.(일본에서는 동명사가 있으니 별 문제가 안될수도 있지만..)
아직 파이썬의 철학을 제대로 이해하지 못한 탓이 있겠지만
단순히 편의를 위해서 추가한 기능이 다른 철학에 젖어있는 사람에게는 파이썬을 배울때
큰 혼란을 가중할 수도 있다는 생각에 몇자 끄적여봤다.
한줄요약 : 하지만 난 __call__을 애용하고 있다.
이 메소드를 오버라이드 하는 순간 그 클래스는 메소드와 클래스의 특성을 모두 가지게 된다.
이 부분이 재미있는데, 파이썬을 사용하는 사람의 입장에서 이 메소드는 다소간의 혼란을 준다.
클래스 인스턴스 자체를 call한다는 것은 어찌보면 편하지만(static메소드 몇개 넣어서 데이터를 초기화 한뒤 클래스를 call해주면 일반적인 메소드보다 알아보기 쉽고 쓰기 쉽게 만들 수도 있다고 생각한다) 객체지향적인 개념으로는 있을 수 없는 일이기 때문이다.
자동차라는 클래스의 람보르기니라는 인스턴스가 '달린다'는 행위를 하지 않고 대신에 '람보르기니'라는 행위를 해버리는 경우와 같기 때문이다. 명사를 동사로써 사용하는, 미쿡인들의 상식적으로 불가능한 경우가 되겠다.(일본에서는 동명사가 있으니 별 문제가 안될수도 있지만..)
아직 파이썬의 철학을 제대로 이해하지 못한 탓이 있겠지만
단순히 편의를 위해서 추가한 기능이 다른 철학에 젖어있는 사람에게는 파이썬을 배울때
큰 혼란을 가중할 수도 있다는 생각에 몇자 끄적여봤다.
한줄요약 : 하지만 난 __call__을 애용하고 있다.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- [5]requirement <3주차 두번째> by selju
- 플래시로 배우는 JAVA 요약 <1> by selju
- 12주차 두번째 일기 by selju
- 프로젝트 조건 by selju
- 형원이를 위한 객체 지향 적인 생각 <소녀시대, 클래스 변수와 인스턴스 변수> by selju
# by ge2us | 2008/08/25 21:11 | 공부이야기 | 트랙백 | 덧글(0)




