2015-02-10 10 views
10

Tôi đã đọc qua Numpy's documentation standards và dường như không đề cập đến thuộc tính đối tượng - chỉ thuộc tính lớp.Tôi nên ghi lại thuộc tính lớp và đối tượng bằng cách sử dụng kiểu của Numpy như thế nào?

Ví dụ: làm cách nào để tôi ghi lại những điều sau đây?

class ClassA(object): 
    """Short description of ClassA 

    Long description of ClassA 

    Parameters 
    ---------- 
    param : param_type, optional 
     param_description 

    Attributes (class) 
    ---------- 
    class_attr : class_attr_type 
     class_attr_description 

    Attributes (object) 
    ---------- 
    obj_attr : obj_attr_type 
     obj_attr_description 

    """ 

    class_attr = 'something' 

    def __init__(self, arg='something else'): 
     self.obj_attr = arg 

EDIT: Chỉ muốn lưu ý rằng tôi đang chuyển sang Napoleon, mà nói nó hỗ trợ các thuộc tính, nhưng không phải lớp đặc biệt hoặc dụ thuộc tính.

+3

Sự khác biệt giữa thuộc tính "lớp" và "đối tượng" trong python khá tinh tế vì vậy tôi nghĩ sự khác biệt được tô bóng trong các tiêu chuẩn. Hãy xem [ở đây] (http://www.toptal.com/python/python-class-attributes-an-overly-thorough-guide) để thảo luận về cách các thuộc tính lớp và đối tượng không hoạt động như mong đợi chúng trong python. –

Trả lời

5

Tôi đã thử những gì được đề cập trong tệp How to Document được cung cấp ở dạng gọn gàng. Nó đề cập đến tài liệu của thuộc tính lớp cần được xử lý như sau.

Một thuộc tính phần, nằm bên dưới phần thông số, có thể được sử dụng để mô tả các biến lớp:

Attributes 
---------- 
x : float 
    The X coordinate. 
y : float 
    The Y coordinate. 

Nó tiếp tục đề cập đến việc tính dụ nên có tài liệu của riêng mình và chỉ được liệt kê bằng tên.

Điều đó có ý nghĩa nhưng tôi không thể tìm thấy bất kỳ ví dụ nào về điều này trong mã nguồn bị sần. Gần nhất tôi tìm thấy đã làm một cái gì đó khác nhau trong ABCPolyBase class.

Attributes 
---------- 
coef : (N,) ndarray 
... 
Class Attributes 
---------------- 
maxpower : int 

Theo tôi, các tài liệu được sử dụng trong lớp _polybase.py là rõ ràng nhưng tôi không tin rằng việc sử dụng Class Attributes sẽ làm việc với tóm tắt autodoc Sphinx.

Tôi hy vọng thông tin này hữu ích.

+0

Đào tốt - cảm ơn! Tôi đã tự hỏi tại sao các thuộc tính instance không được thừa nhận - tôi thấy những thuộc tính này hữu ích hơn nhiều so với các thuộc tính của lớp (đặc biệt là kể từ khi, như @Bi Rico đã cho thấy, các thuộc tính instance supercede các thuộc tính lớp). –

+0

Tôi tự hỏi liệu tôi có phải mở rộng Napoléon để có thể sử dụng thuộc tính lớp hoặc thể hiện - không giống như họ liệt kê riêng các tài liệu đó trong tài liệu của họ: http: //sphinxcontrib-napoleon.readthedocs .org/en/latest/index.html –

+0

Có một vấn đề mở trên Sphinx về sự nhầm lẫn tài liệu lớp học và các thuộc tính ví dụ: https://github.com/sphinx-doc/sphinx/issues/3141 – x0s

Các vấn đề liên quan