tôi có một loạt các lớp học mà sử dụng "đặc biệt phương pháp":Bao gồm cụ thể đặc biệt-phương pháp trong nhân sư
class Foo(object):
"Foo docstring"
attr1 = "Attribute!" #: first attribute
attr2 = "Another Attribute!" #: second attribute
def __init__(self):
self.x = 12
def say_hello(self):
"""
say_hello(self) -> None
Issue a friendly greeting.
"""
print "Hello! x is {0}".format(self.x)
def __contains__(self,other):
"""Implement ``other in self``"""
return other == self.x
bây giờ tôi muốn tạo tài liệu html cho điều này sử dụng Sphinx và autodoc. Làm thế nào để tôi nói với Nhân sư ghi lại tài liệu __contains__
? Tôi đã thử thêm
autodoc_default_flags = ['members', 'undoc-members', 'special-members']
để conf.py
, nhưng điều đó cũng bao gồm __dict__
mà tôi chắc chắn không muốn.
Hiện nay, các phần liên quan của giao diện myproject.rst
tập tin như:
.. automodule:: myproject.foomodule
:members:
:undoc-members:
:show-inheritance:
chỉnh sửa thêm
.. automodule:: myproject.foomodule
:members:
:undoc-members:
:show-inheritance:
.. automethod:: myproject.foomodule.Foo.__contains__
làm thêm tài liệu của phương pháp đó, nhưng trong một phần riêng biệt - Không như một phần của tài liệu lớp học Foo
.
OTTOMH - Tôi tin rằng bạn phải rõ ràng và sử dụng '.. automethod :: __contains__' như tôi không tin 'chuyên members' chấp nhận bất kỳ hình thức lọc tham số –
Ví dụ trong câu hỏi không chính xác trình bày một trường hợp hấp dẫn để ghi lại phương pháp này. Không có vấn đề gì trong việc ghi lại '__contains__' nếu nó chỉ cho bạn biết một đối tượng có phải là thành viên của một bộ sưu tập hay không. Đó là [đã được ghi lại bằng Python] (http://docs.python.org/3/reference/datamodel.html#object.__contains__). Bạn có thể đề cập đến trong chuỗi docstring cho lớp mà toán tử 'in' được hỗ trợ. –
@JonClements - Điều đó có vẻ gần gũi. Tôi đã thêm một '.. automethod :: myproject.foomodule.Foo .__ contains__'' sau công cụ' ..automethod' ở trên và nó thêm tài liệu, nhưng nó được ghi lại riêng biệt với lớp. – mgilson