매개 변수.파이썬 기술자 (__get__, __set__)는 일반적으로 기술자 그래서 같은 클래스 속성에 사용되는
Owner
이 인스턴스화되면 instance
은 Owner
의 인스턴스가됩니다.
이제이 개념을 클래스 속성 대신 메서드 매개 변수에 적용하고 싶습니다.
class Example(object):
def funct(self, param=Attr('t')):
return param == 'test' # < param calls the descriptor here
e = Example()
e.funct('es') # < is True because 'es' wrapped with 't' becomes 'test'.
param
에 액세스 Attr.__get__(self, instance, owner)
가 self = funct.param
, instance = funct
및 owner = funct
호출됩니다
(의이 Attr
의 기능이 주어진 문자열로 문자열을 래핑하는 것입니다 가정하자) (owner
과 instance
이 같은 것은 아니지만 None
일 수 있습니다.). 그러나 funct
은 클래스가 아니기 때문에 작동하지 않습니다. 어떻게하면 일과 비슷한 것을 얻을 수 있습니까?
함수의 데코레이터가 매개 변수를 처리하므로 이것이 내가 생각하는 해결책에 추가 될 수 있습니다. 데코레이터는 예를 들어 래퍼 문자열을 변경할 수 있어야합니다.
'param '에 액세스하는 방법을 보여주는 사용 시나리오를 추가 할 수 있습니까? – unutbu
이 기능의 목적은 무엇입니까? 함수에 상태를 첨부하려고합니까? 인수를 통해 함수의 동작을 동적으로 정의하려고합니까? 함수가 실행될 때까지 일부 종속성의 해결을 지연하려고합니까? –
@unutbu 나는 더 잘 어울리는 사용 예제를 추가했다. 지금은 더 명확 해 졌다고 생각하니? – siebz0r