У меня есть список объектов Spam:
class Spam:
def update(self):
print('updating spam!')
некоторые из них могут быть объектами SpamLite:
class SpamLite(Spam):
def update(self):
print('this spam is lite!')
Spam.update(self)
Я хотел бы иметь возможность взять произвольный объект изсписок и добавить что-то в его метод обновления, что-то вроде:
def poison(spam):
tmp = spam.update
def newUpdate(self):
print 'this spam has been poisoned!'
tmp(self)
spam.update = newUpdate
Я хочу, чтобы spam.update () теперь печатал:
this spam has been poisoned!
updating spam!
или
this spam has been poisoned!
this spam is lite!
updating spam!
в зависимости от того, был ли это SpamLite или просто спам.
Но это не сработает, потому что spam.update () не передаст аргумент self автоматически, и потому что если tmp покидает область действия или изменяется, он не будет вызывать старое обновление.Есть ли способ, которым я могу сделать это?