У меня раздувается документация, так как всякий раз, когда я сталкиваюсь со сложным типом утки, мне нужен какой-то способ сказать «этот тип утки», но вместо этого я попадаю в бесконечный цикл «ваша функция требует этого ввода, но не документирует это ", а затем документирует это.Это приводит к раздутой, повторяющейся документации, такой как:
def Foo(arg):
"""
Args:
arg: An object that supports X functionality, and Y functionality,
and can be passed to Z other functionality.
"""
# Insert code here.
def Bar(arg):
"""
Args:
arg: An object that supports X functionality, and Y functionality,
and can be passed to Z other functionality.
"""
# Insert code here.
и так далее, и так далее, для Baz
, Qux
и других функций.Мне нужен какой-то более короткий способ написания «arg
- это (тип объекта)».
Для некоторых типов уток это так же просто, как и «Диктоподобный объект»: мы знаем, чего ожидаем оти так мы знаем, что передать.A dict
, или что-то, что может имитировать это.
Я чувствую, что C ++ имеет ту же проблему с шаблонными типами.У Haskell это будет, но для документирования можно использовать определение класса типа.(Примечание: классы на Haskell! = Классы на Java / C ++ / Python / и т. Д.) (Примечание: на самом деле я не программирую на Haskell, так что извините, если это дурацкий пример.)
Должен ли я пойтитрадиционный OO-маршрут, и просто напишите базовый класс и скажите «что-нибудь подобное этому базовому классу» в документах?В коде не будет принудительно производного от базового класса (поскольку не требуется, чтобы объект был получен из него), и базовый класс не добавляет никакого значения, кроме как для документирования свойств интерфейса, по существу.
С другой стороны, я программирую на Python и пытаюсь программировать на языке языка.(Как это обычно бывает больно.) Базовые классы хороши для наследования функциональности, но когда ваш базовый класс полностью абстрактен, кажется, что он не добавляет значения на языке с уткой.
РЕДАКТИРОВАТЬ : К ответам: я знаю, что такое утка (это должно быть видно из поста).Где я документирую это вопрос, особенно?когда не существует класса для прикрепления документации.