2016-10-30 3 views
-2

фонPython как «заимствовать» docstring из другого класса?

Я использую Джанго-Rest-чванство для отображения документации по API, официальный способ для чванства, чтобы использовать строку документации с точки зрения.

Цель

Много документации, строка документации выполняются в Model классе, поэтому я хотел бы, чтобы «одолжить» на строку документации из Model класса в APIModelView класс, без физического копирования строки документации.

Например.

class Model(models.Model): 
    """ 
    Very comprehensive docstring... 
    """ 

    field_1 = ... 
    field_2 = ... 


class APIModelView(ModelView): 
    """ 
    <borrow from the model class> 
    """ 
    model = Model 

Расширение

ответ @Martijn Питерс работал отлично на уровне класса строку документации

Я просто понял, чванство фактически использует метод экземпляра, например, строка документации.

class APIModelView(ModelView): 
     def list(self, request, *args, **kwargs): 
      __doc__ = Model.__doc__ 
      ... 

но выше не работает ...

+0

Должно быть возможным подклассифицировать метакласс «ModelView», прикрепить его к подклассу «ModelView» и сделать метакласс выполненным именно для вас автоматически. Тем не менее, я не могу найти, где вы, возможно, получили «ModelView». –

+0

К парню, который отказался от этого вопроса, не могли бы вы указать причину? –

ответ

0

Вы можете установить атрибут __doc__ при создании класса; просто сделать, что копия оригинальной модели:

class APIModelView(ModelView): 
    __doc__ = Model.__doc__ 
    model = Model 

без фактической строки документации по классу, любой уже присутствует __doc__ атрибута сохраняется.

+0

Привет, класс docstring класса теперь отлично подходит, спасибо, знаете ли вы, как установить метод экземпляра docstring? –

+0

@JamesLin: «метод экземпляра»? Я не уверен, что вы имеете в виду. У экземпляров нет докшлинга; они наследуют атрибут '__doc__' из своего класса. –

+0

Привет @Martijn Pieters Я только что обновил свой ответ –

Смежные вопросы