16
파이썬에서는 클래스 함수와 인스턴스 메소드로 동작하지만 동작을 변경할 수있는 기능을 만들 수 있기를 바랍니다. 이것에 대한 사용 사례는 일련화할 수있는 객체 및 유형 집합입니다. 예를 들어 :동시에 인스턴스와 클래스 메소드 인 메소드 만들기
>>> class Thing(object):
#...
>>> Thing.to_json()
'A'
>>> Thing().to_json()
'B'
나는 그것이 C 모듈과 간단 할 것 같은 파이썬 소스 funcobject.c에서 classmethod의 정의() 주어진이 보이는 것을 알고있다. 파이썬 안에서이 작업을 수행 할 수있는 방법이 있습니까?
감사합니다. 기술자의 힌트와 함께
, 나는 다음과 같은 코드와 함께 할 수 있었다 :class combomethod(object):
def __init__(self, method):
self.method = method
def __get__(self, obj=None, objtype=None):
@functools.wraps(self.method)
def _wrapper(*args, **kwargs):
if obj is not None:
return self.method(obj, *args, **kwargs)
else:
return self.method(objtype, *args, **kwargs)
return _wrapper
당신에게 알렉스 감사합니다!
왜 * 유형 *을 serialize해야합니까? –
에는 많은 이유가 있습니다. 필자의 특별한 문제에서이 형식을 직렬화하면 RPC 시스템에서 사양을 만들 수 있습니다. –