Python 정적 메소드와 클래스 메소드

 

정적 메소드 : 인스턴스 객체를 이용 하지않고 클래스 이름을 이용하여 직접 호출해야 하는 상황에 사용

정적 메소드는 일반 메소드와는 달리 첫 인수로 self를 받지 않으며 필요한 만큼의 인수를 선언해서 사용.

staticmethod() 를 사용해 정적 메소드 등록

예제를 작성해보자.

클래스로부터 생상되는 인스턴스의 개수를 관리하는 class 를 만들어보자

소스를 간단히 설명하면…

instance 객체 생성시, instance 개수를 저장하는 클래스 멤버 변수 cnt가 증가 되도록 설정.
s_print_count() 메소드에서는 instance 개수를 출력.
s_print_count() 메소드는 정적메소드로 등록 하였다.

결과는 아래와 같다.

결과와 같이 클래스를 통하여 호출하는 경우는 정상적으로 수행(정적메소드)되나, 인스턴스 객체를 이용하여 호출하는 경우에는 TypeError가 발생하는 것을 확인할 수 있다.

위와 같은 Error가 발생하지 않도록 하기 위해서 클래스 메소드를 이용하면 다음과 같이 다시 작성할수 있다.

즉 클래스 메소드는 인스턴스에서 정적 메소드처럼 사용할 수 있도록 만들어주며, 암묵적으로 인스턴스의 class 가 매개변수로 넘어간다.

참고 : http://blog.naver.com/dudwo567890?Redirect=Log&logNo=130164152571

 

This entry was posted in Python/Ruby/Perl and tagged . Bookmark the permalink.

댓글 남기기