2012-01-14 3 views
1

나는 정적 메서드를 파이썬 클래스에 동적으로 추가하는 방법을 찾고 있었다.메소드를 정적 변수에 저장하는 방법은 무엇입니까?

내 시도는 다음과 같은했다 :

class C(object): 
    a = None 

k = 2 
C.a = lambda x: k*x 
print C.a(2) 

은 불행히도, 난 C 인스턴스가 a에 첫 번째 인수로 필요 없다는 오류가 발생합니다. 효과적으로, 파이썬은 a이 클래스 메서드가 아닌 C 클래스의 인스턴스 메서드라고 생각합니다.

이유는 무엇입니까? 문제를 어떻게 극복 할 수 있습니까?

답변

5

사용 staticmethod :

>>> C.a = staticmethod(lambda x: k*x) 
>>> print C.a(2) 
4 
관련 문제