2014-11-16 4 views
3

기능 주석 : PEP-3107self를 반환하는 Python3 메서드에 주석을 달려면 어떻게해야하나요?

배경 : Linux의 Python 사용자는 3.4x입니다. 함수 매개 변수와 반환 형식에 주석을다는 것이 도움이된다는 것을 알았습니다. IDE는 이러한 방법을 사용할 때 더 나을 수 있습니다.

질문 : 자체 연쇄 메서드의 경우 메서드 반환 값에 어떻게 주석을 추가 할 수 있습니까? 내가 클래스 이름을 사용하는 경우, 파이썬은 컴파일시에 예외가 발생합니다 : NameError: name 'X' is not defined

샘플 코드 : 트릭으로

class X: 
    def yaya(self, x: int): 
     # Do stuff here 
     pass 

    def chained_yaya(self, x: int) -> X: 
     # Do stuff here 
     return self 

을, 난 그냥 클래스 선언하기 전에 X = None를 넣어 경우, 그것을 작동합니다. 그러나, 나는이 기술에서 unforseen, 부정적인 부작용이 있는지 모르겠습니다.

답변

0

당신은 할 수 : 클래스 정의가 완료 될 때까지 코드에서

class X: 
    pass 

class X: 
    def yaya(self, x: int): 
     # Do stuff here 
     pass 

    def chained_yaya(self, x: int) -> X: 
     # Do stuff here 
     return self 

는 X가 정의되지 않았습니다. 여기

같은 문제 : putting current class as return type annotation

그의 해결책은 문자열을 사용하는 것이 었습니다. 귀하의 코드에서 -> 'X'

+3

문자열 솔루션이 공식적으로되었습니다 (결과적으로 PyCharm이이를 완벽하게 지원합니다) - 여기를보십시오 : https://www.python.org/dev/peps/pep- 0484/# forward-references. –

관련 문제