나는 현재 파이썬의 API 라이브러리를 쓰고 있어요 다음과 같은 코드가 너무 unpythonic 있는지 궁금 해요 :하지 목록에있는 kwargs로가 전달되는 경우 accepts
장식이 오류가 발생합니다반복적 인 코드를 방지하기 위해 ** kwargs와 데코레이터를 사용할 수 있습니까?
@accepts('video_id', 'reference_id', 'page_size', 'page_number',
'get_item_count', 'fields', 'video_fields', 'custom_fields',
'media_delivery', 'output')
@requires('video_id', 'reference_id')
def find_related_videos(self, **params):
return ItemCollection(read_request(params))
방법. 또한 특정 키워드에 대한 유효성 검사를 수행합니다.
장식자 requires
데코레이터는 이러한 키워드 인수가 있는지 확인합니다.
메서드 정의에 args 키워드가 없으므로 저를 괴롭 히고 있습니다. 그러나 각 방법에 대해 params 사전을 수동으로 작성해야하는 것은 짜증이납니다. 또한 메서드에 전달 된 video_fields
인수의 모든 인스턴스에 대해 동일한 유효성 검사 코드가 있으므로 반복을 피하기 위해 데코레이터에서 호출 할 수 있습니다.
생각하십니까?
여기에 약간의 문제가 있다는 것을 알고 있습니다.하지만 호출자가 변수를 전달하면 호출자는 해당 변수가 중요 할 것으로 예상하고 호출자가 무시해야 할 것으로 예상하지 않을 수 있습니다. 이것은 예기치 않은 결과를 초래할 수 있으며 이는 좋은 일이 아닙니다. 필자는 일반적으로 오류를 던지고 프로그래머가 매개 변수를 무시하고 프로그래머를 놀라게하는 것보다 중요한 것을 보는 것이 더 좋습니다. – TimothyAWiseman