В примере 13.22 представлена реализация суперкласса, общего для всех остальных классов в пакете. Отчасти такая организация предусмотрена с целью поддержки возможности расширения. В настоящее время эта возможность используется, только чтобы включать и выключать вывод трассировочных сообщений (в некоторых клиентах, таких как веб-приложения, может быть нежелательным, чтобы в стандартный поток вывода выводился бы посторонний текст). Подклассы, подмешивающие «немую» версию, лишаются возможности вывода.
Пример 13.22. PP4E\Internet\Email\mailtools\mailTool.py
############################################################################ общие суперклассы: используются для включения и отключения вывода трассировочных сообщений
############################################################################
class MailTool: # суперкласс всех инструментов
# электронной почты
def trace(self, message): # переопределите, чтобы запретить
print(message) # или выводить в файл журнала
class SilentMailTool: # для подмешивания, а не наследования
def trace(self, message):
pass
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011