doctest модуля ищет любые строки документации в файл и выполняет любой встроенный код в нем, так что да, можно использовать doctest для классов.
Что касается того, лучше ли размещать доктрины в docstring класса или конструкторе, я думаю, это зависит от того, что именно вы документируете.
Если docstring дает общий обзор класса и как его использовать, я думаю, что лучше поместить его в класс.
Если docstring конкретно о том, как создавать экземпляры класса, тогда он должен идти в методе __init__
.
Помните, что целью доктрин является, прежде всего, самоподтверждающий примерный код в документации, поэтому ИМХО, аспект документации должен иметь приоритет над аспектом тестирования.
Edit:
В вашем примере выше нет кода для выполнения doctest - бег python test.py -v
будет выполнять основной код питона, который просто определяет класс.
Вы должны добавить это в конец файла:
if __name__ == "__main__":
import doctest
doctest.testmod()
В качестве альтернативы Если вы используете Python 2.6 или более поздней версии запустите его с:
python -m doctest -v test.py
Как примечание стороны, всегда наследуют от 'object', а не ничто, так что вы используете * новый стильные классы *. –
За исключением python 3, где есть только классы нового стиля, а 'object' подразумевается без объявленных родителей. – Daenyth