У меня есть документация наворотов на меня, так как в любое время, когда я сталкиваюсь с сложным утиным типом, мне нужно как-то сказать "этот тип утки", но вместо этого попасть в бесконечный цикл "ваша функция требует этого из этого ввода, но не документирует его", а затем документирует его. Это приводит к раздутой, повторяющейся документации, например:
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
или что-то, что может имитировать.
Я чувствую, что С++ имеет ту же проблему с шаблонами. Haskell получил бы это, но можно использовать определение класса типа для его документирования. (Примечание: классы Haskell!= Классы в Java/С++/Python/и т.д.) (Примечание: я действительно не программирую в Haskell, так что простите меня, если это дрянной пример.)
Должен ли я идти традиционным маршрутом OO и просто писать базовый класс и говорить "что-нибудь вроде этого базового класса" в документах? Код не будет принудительно выводить из базового класса (поскольку нет требования к тому, чтобы объект был получен из него), а базовый класс не добавляет значения, кроме как для документирования свойств интерфейса, по существу.
С другой стороны, я программирую Python, и я пытаюсь программировать в пределах идиом языка. (Как обычно, это больно.) Базовые классы хороши для наследования функциональности, но когда ваш базовый класс полностью абстрактен, он, похоже, не добавляет значения в язык с утиным языком.
РЕДАКТИРОВАТЬ. К ответам: я знаю, что такое утиная печать (это должно быть очевидно из сообщения). Где я документирую это вопрос, особенно. если класс не существует для прикрепления документации к.