Як параметризованих docstrings в python, михайло Поляруш

Найчастіше автоматизаторів стикаються з проблемою виведення в логи потрібної інформації. До мене звернулася колега з питанням параметризації docstrings в python. Хочу просто підвести пунктик, що можна, а що не можна робити з docstrings.

  • Ви можете вказувати docstrings для модуля, класу, функції, методу
  • Всі описи docstrings йдуть відразу ж після визначення якоїсь суті, тобто відразу після класу, функції і т.д.
  • docstrings не можуть бути параметрізірованни
  • docstrings це тільки рядок і не більше того

Для того, щоб вам продемонструвати, як працює python docstrings подивіться на цей код:

Але все ж, якщо вам наприклад, потрібно в docstrings щось замінити, то ви напевно захочете зробити це так.

На жаль, так працювати код у вас не буде і коли ви будете звертатися до docstrings, то об'єкт буде з типом None. І все ж як туди вставити потрібні дані для того, щоб використовувати docstrings в своїх потребах? Просто треба працювати з рядком docstrings і все. Приклад, вам потрібно використовувати docstrings методу для виведення чогось там в лог. Як ви це можете зробити?

Тобто ви вказуєте якусь будь-який рядок в docstrings, а потім її замінюєте на те що вам потрібно в момент виконання програми. Це звичайно неідеальний рішення тому як є ряд побічних ефектів, але якщо вам дійсно це необхідно, то можете користуватися

Удачі і хорошого python програмування!

А також можна почитати:

Дуже корисна інформація, дякую.

чи не простіше тоді

(Наприклад, якщо ми використовуємо nosetests + DDT) і імена тестів у нас динамічні.

ну можна по різному зробити, в залежності від потреби
python ліберальний мову програмування і дозволяє робити багато
приклад взагалі був для doctest, але така параметризація рідко коли буває
і у випадку з nosetests взагалі може бути і не треба

Так.
З nosetest так не працює, доводиться декораторами ...

Я б так сказав, це більше милицю, ніж фіча.
Просто я показав цей приклад, так як у деяких людей були питання.
Але ще раз скажу, в житті, це рідко застосовується.