Я работаю над Learning Python 4th Edition и в настоящее время я работаю над упражнениями для части VI книги.Упражнение, которое я сейчас выполняю, немного смущает меня, и я надеялся, что смогу получить небольшое руководство относительно того, как я могу его решить.
Вот подсказка, с которой я работаю.
Подклассы.Создайте подкласс MyList из упражнения 2 под названием MyListSub, который расширяет MyList для печати сообщения на стандартный вывод перед вызовом каждой перегруженной операции и подсчитывает количество вызовов.MyListSub должен наследовать поведение основного метода от MyList.Добавление последовательности в MyListSub должно напечатать сообщение, увеличить счетчик для вызовов + и выполнить метод суперкласса.Кроме того, представьте новый метод, который выводит счетчики операций на стандартный вывод, и поэкспериментируйте с вашим классом.Ваши счетчики считают вызовы за экземпляр или за класс (для всех экземпляров класса)?Как бы вы запрограммировали другой вариант)?(Подсказка: это зависит от того, какому объекту назначены члены подсчета: члены класса являются общими для экземпляров, но собственные члены являются данными для каждого экземпляра.)
Так что часть, в которой я действительно заинтересованпрямо сейчас
Создайте подкласс MyList из упражнения 2 под названием MyListSub, который расширяет MyList для вывода сообщения на стандартный вывод перед вызовом каждой перегруженной операции и подсчитывает количество вызовов.
Я вижу хорошее применение СУХОЙ здесь, которая убьет всех моих птиц одним камнем.Но я просто не знаю, как это реализовать.Я знаю, что мне нужно реализовать какой-то метод, который перехватывает операции, увеличивает счетчик и печатает сообщение.Но я не знаю, как лучше всего это сделать.Моя основная идея - что-то вроде
def count_ops(self, op_count):
# intercept calls to operator overloading methods
op_count += 1
print 'Number of calls to operator {0}: {1}'.format(oper, op_count)
(Примечание: это не код, который я написал, это пограничный псевдокод, чтобы выделить то, что я хочу сделать.)
Могу ли яполучить небольшую помощь здесь?Пожалуйста, не дайте мне ответ прямо, я хочу понять это, и подсказки идут намного дальше, чем ответы.:)