У меня есть приложение Django==2.2.3
с djangorestframework==3.9.4
и django-rest-swagger==2.2.0
. Я хотел иметь единый источник правды (для проверки данных, а также api-docs) для моих конечных точек API. У меня есть JSON, который выглядит примерно так
{
"get": {
"query_param1" : {
"type": "string",
"required": "false",
"message": "what does it do/what is it for?"
},
"query_param2" : {...},
"responseMessages": {
"code: 401": "Not authenticated",
"code: 403": "Insufficient rights to call this procedure"
}
},
"delete": {
"query_param1" : {...},
"query_param2" : {...},
"responseMessages": {...},
},
"put": {...},
"post": {...},
}
Я создал схему json из этого, и проверка работает.
Этот json преобразуется в yaml строка, которая используется django-rest-swagger
. Как он использует yaml, вам нужно поместить yaml в строки do c. Но я не хочу go и писать одно и то же для каждой вещи. Будет много конечных точек, и писать одно и то же для всех этих конечных точек будет неправильно.
Поэтому я решил, что если я создам базовый класс и просто отправлю json этому базовому классу, он может создать все строки do c для меня, используя json и динамически помещая его в требуемые функции. Теперь я сталкиваюсь с блокировщиком, и он говорит.
AttributeError: атрибут '__ do c __' объектов 'method' недоступен для записи
Вот как мой класс выглядит так:
class Parent:
def __init__(self):
schema = json.load(schema_path)
self.get.__doc__ = convertToYaml(schema['get'])
**ERROR HERE: AttributeError: attribute '__doc__' of 'method' objects is not writable**
class Child(Parent)
def get(self):
JsonResponse({message: "Hi! I work fine" })
TLDR:
Ошибка получена : AttributeError: атрибут __ do c __ объектов метода не доступен для записи
Вопрос : Как изменить строку документации функции детского класса из родительского класса?