Tôi có một cái gì đó lớp Python như sau, với docstrings dự định sẽ được chuyển đổi thành tài liệu bằng cách Sphinx:Làm cách nào để tạo tài liệu cho trình thiết lập thuộc tính Python bằng Sphinx?
class Direction(object):
"""
A direction in which movement can be made.
"""
def __init__(self):
self._name = None
@property
def name(self):
"""
The unique name of the direction.
:return: The direction name
:rtype: string
"""
return self._name
@name.setter
def name(self, value):
"""
Sets the direction name.
:param string value: The direction name
"""
self._name = value
Sản lượng Sphinx trông giống như sau:
lớpDirection (name) Một hướng mà trong đó chuyển động có thể được thực hiện.
tên Tên độc đáo của hướng.
Returns: Tên hướng
loại Return: chuỗi
đó là tốt như xa như nó đi, nhưng lưu ý sự vắng mặt hoàn toàn của bất kỳ thông tin về thiết lập name
.
Có cách nào để đưa Sphinx tạo tài liệu cho trình thiết lập thuộc tính không?
Có vẻ như sẽ có ý nghĩa hơn khi ghi lại bất kỳ hành vi nhận/tập đặc biệt nào trong tài liệu getter nếu đó là nơi Sphinx tìm kiếm nó. Tài liệu của bạn cho setter ở đây về cơ bản là thừa: nó là một thuộc tính, vì vậy nó rõ ràng là đặt giá trị, và ghi lại tham số cũng không cần thiết vì mọi setter yêu cầu cùng một đối số, và setter sẽ không thực sự được gọi một cách rõ ràng. Đặc biệt có được/thiết lập hành vi thực sự là một đặc tính của tài sản như một toàn thể. Điểm của các thuộc tính là chúng được truy cập thông qua một tên thuộc tính duy nhất, không phải các cuộc gọi hàm get/set riêng biệt. – BrenBarn
@BrenBarn Tôi chắc chắn có thể làm điều đó nếu đó là những gì Sphinx đang mong đợi. Tuy nhiên, tài liệu được tạo ra không thực sự chỉ ra rằng đó là một thuộc tính và tôi không chắc chắn làm thế nào tôi có thể sử dụng các thẻ ': param:', ': return:' và ': rtype:' để làm rõ điều này? –
@MatthewMurdoch, Sphinx ghi tài liệu getter mà không sử dụng '()'. Điều này, cùng với chuỗi tài liệu được kết hợp của bạn, sẽ giúp người dùng hiểu rằng đó là thuộc tính. –