일반적으로 inspect.getargspec을 사용 하겠지만 바인딩 된 메서드의 인수를 얻으려면 어떻게해야합니까? 나는 방법 '갑'의 인수 이름을 얻는 방법파이썬 메서드에 대한 인수를 얻으려면 어떻게해야합니까?
예는 다음과 같습니다.
이class Foo(object):
@memoized
def foo(self, arg1, arg2):
pass
foo는이 memoized 객체이라고 푸() 참고 http://wiki.python.org/moin/PythonDecoratorLibrary#Memoize
이는 것을 의미한다 정말 functools.partial 인스턴스입니다.
원래 함수를 얻거나 어떻게 인수를 얻을 수 있습니까?
내가 할 수 없다면, 이것은 PythonDecoratorLibrary의 디자인 결함을 나타 냅니까?
def __get__(self, obj, objtype):
"""Support instance methods."""
f = functools.partial(self.__call__, obj)
f._wrapped = self.func
return f
또는 그것에서 액세스 않다면 obj가 없음 (즉,없는 경우에는 부분 대신 self.func를 반환 할 수 :
나는이 문제를 해결할 수있는 내 자신의 Memoize 대체품을 효율적으로 작성하여 원래의 기능을 사용할 수 있도록 노력했습니다. – Arafangion
eryksun : 부분적으로 _wrapped 속성을 추가했는데, 이미 .func (카레 함수 인 것 같습니다)가 있기 때문에 이상하게 보일 수 있지만, obj가 None 인 경우 부분 대신 self.func를 반환합니다. '매우 무심코. 그것을 '대답'으로 넣을 수 있을까요, 받아 들일 수 있습니다. 2.7.x를 사용하고 있지만 python3의 lru_cache에 대한 언급은 내가 알고 있어야하는 것처럼 보입니다. 참조를 제공 할 수 있습니까? – Arafangion