2013-01-03 4 views
0

같은 함수 A를 호출하는 몇 가지 함수 (B1, B2, B3 등 ...)가 있다고 가정합니다. B1, B2, B3의 문서 문자열에 함수 A가 사용하는 매개 변수를 설명하는 일부 텍스트를 넣으려고합니다. 그리고 이것들은 함수 A의 문서화 문자열에서 이미 설명되어 있습니다. 그러나 A의 docstring을 B1, B2, B3으로 복사하고 나중에 함수 A의 docstring을 변경하면 B1을 변경해야합니다. B2, B3 ... 다시, 나는 A의 docstring을 업데이트 할 수 있도록 B1의 docstring의 일부를 연결할 수있는 방법이 있는지 궁금하다. 따라서 A의 docstring이 업데이트 될 때 B1의 해당 부분도 업데이트 될 것이다. . 이 방법으로, 사용자는 A의 docstring을 확인하지 않고도 도움말 정보를 위해 함수 B1의 문서화 문자열을 직접 참조 할 수 있습니다 (실제로 A 매개 변수는 모두 kwargs 임). 어떤 도움python의 다른 함수에 따라 함수 docstring을 자동으로 업데이트하는 방법은 무엇입니까?

def A(): 
    ''' 
    I am doctring for function A 
    ''' 
    pass 

def B1(): 
    ''' 
    I am doctring for function B1, 

    followed by the same docstring as function A, which is: 

    ** I would like someway I can put the docstring of A here** 
    ''' 
    pass 

감사 또는 다른 링크에 저를 언급, 나는 그것을하지만 타겟 정보가 발견되지 않는 인터넷 검색을 시도 : 간단한 예는 다음과 같은 수 있습니다.

당신이 할 수있는 장식을 쓸 수
+5

당신은 장식으로 이런 일을 달성, 그런데 왜 바로 이러한 매개 변수를 설명하기위한의 설명서를 참조하십시오 "라는 문서화 문자열에 메모를 골로 연결되지 못했습니다 "? – BrenBarn

+0

예, 동의합니다. 대부분의 경우이 방법이 더 명확합니다. – wiswit

답변

2

:

def append_doc_of(fun): 
    def decorator(f): 
     f.__doc__ += fun.__doc__ 
     return f 

    return decorator 


def A(): 
    ''' 
    I am doctring for function A 
    ''' 
    pass 


@append_doc_of(A) 
def B1(): 
    ''' 
    I am doctring for function B1, 

    followed by the same docstring as function A, which is: 

    ''' 
    pass