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

122 views
Skip to first unread message

graphy21

unread,
Feb 24, 2011, 8:38:57 PM2/24/11
to Python 3 질문 게시판
일반적으로 클래스 안에 메소드들은 인스턴스에 의해 바운드 메소드 호출이 되고 클래스 자체에서 호출이 되려면 인자로 인스턴스를 넘
겨주는 언바운드 메소드 호출이 이루어져야 한다고 이해했습니다. 그렇기 때문에 클래스에서 인스턴스없이 메소드를 사용하기 위해서 있
는것이 정적 메소드와 클래스 메소드 인것 같은데요..(제가 이해한게 맞는지 모르겠습니다만..)

그럼 왜 두가지 메소드가 존재하는거죠? 클래스 자체에서 호출이 가능하게 하기 위해서 존재하는것 같은데 두가지의 용도의 차이가 뭔
지 궁금합니다.

답변 부탁드립니다.

Dsp

unread,
Mar 1, 2011, 2:19:27 AM3/1/11
to Python 3 질문 게시판
안녕하세요,
거의 유사합니다만, 몇가지 차이점이 있습니다.

정적메소드는 주로 인스턴스 없이도 기능을 제공해야 하는 경우에 주로 사용되며,
클래스메소드는 자기가 어느 클래스인지 알아야되는 상황에 사용됩니다.

아래의 간단한 예제와 실행결과를 보시면 이해가 되실 것입니다.

>>> class A:
def a(*a):
return a
def b(*a):
return a
a=staticmethod(a)
b=classmethod(b)


>>> A.a()
()
>>> A.b()
(<class __main__.A at 0x016064B0>,)

감사합니다.

Reply all
Reply to author
Forward
0 new messages