나는 속성이 공개적으로 액세스 할 수 있도록 의도 된 경량 클래스를 작성하고 있으며 때로는 특정 인스턴스화에서만 재정의됩니다. Python 언어에는 클래스 속성 또는 모든 종류의 속성에 대한 독 스트링을 생성하기위한 규정이 없습니다. 이러한 속성을 문서화하기 위해 예상되고 지원되는 방법은 무엇입니까? 현재 나는 이런 종류의 일을하고 있습니다.
class Albatross(object):
"""A bird with a flight speed exceeding that of an unladen swallow.
Attributes:
"""
flight_speed = 691
__doc__ += """
flight_speed (691)
The maximum speed that such a bird can attain.
"""
nesting_grounds = "Raymond Luxury-Yacht"
__doc__ += """
nesting_grounds ("Raymond Luxury-Yacht")
The locale where these birds congregate to reproduce.
"""
def __init__(self, **keyargs):
"""Initialize the Albatross from the keyword arguments."""
self.__dict__.update(keyargs)
이렇게하면 초기 표준 독 스트링 섹션이 포함 된 클래스의 독 스트링이 생성되고에 대한 추가 할당을 통해 각 속성에 추가 된 행이 생성됩니다 __doc__
.
이 스타일은 독 스트링 스타일 가이드 라인 에서 명시 적으로 금지 된 것 같지는 않지만 옵션으로 언급되지 않았습니다. 여기서의 장점은 속성을 정의와 함께 문서화하는 방법을 제공하는 동시에 표현 가능한 클래스 독 스트링을 생성하고 독 스트링의 정보를 반복하는 주석을 작성하지 않아도된다는 것입니다. 실제로 속성을 두 번 작성해야한다는 사실에 여전히 약간 짜증이납니다. 적어도 기본값의 중복을 피하기 위해 독 스트링에있는 값의 문자열 표현을 사용하는 것을 고려하고 있습니다.
이것은 임시 커뮤니티 규약에 대한 가혹한 위반입니까? 괜찮아? 더 좋은 방법이 있습니까? 예를 들어, 속성에 대한 값과 독 스트링을 포함하는 사전을 만든 다음 클래스에 내용을 추가 __dict__
하고 클래스 선언의 끝 부분에 독 스트링 을 추가 할 수 있습니다 . 이렇게하면 속성 이름과 값을 두 번 입력 할 필요가 없습니다. 편집 :이 마지막 아이디어는 실제로 가능하지 않다고 생각합니다. 적어도 데이터에서 전체 클래스를 동적으로 구축하지 않고서는 불가능하다고 생각합니다. 다른 이유가 없다면 정말 나쁜 아이디어처럼 보입니다.
저는 파이썬에 익숙하지 않고 코딩 스타일에 대한 세부 사항을 계속 작업하고 있으므로 관련없는 비평도 환영합니다.