Я создаю игру.Каждый раз, когда происходит определенное действие, он посылает сигнал.Сигнал используется многими различными объектами.Например, экземпляры модели игрока будут восстанавливать немного здоровья, фонари уменьшат оставшееся масло.Я хочу, чтобы экземпляры этой модели реагировали и модифицировали свои данные при излучении сигнала.Тем не менее, я не знаю, как ссылаться на сам экземпляр в функции приемника, так как я не могу поместить «self» в список аргументов, которые использует функция.
class Lantern(models.Model):
oil_left= models.IntegerField(default=4)
@receiver(mySignal)
def burn(sender, **kwargs):
self.oil_left -= 1 #<- self is not defined obviously
self.save() #<- self is not defined obviously
Почему получатель какметод экземпляра?Потому что список экземпляров, реагирующих на сигнал, неизвестен при отправке сигнала.Сигнал - это просто пинг, уведомляющий заинтересованные объекты (т. Е. С помощью метода получателя) о том, что произошло событие, чтобы они могли инициировать свое собственное специфическое поведение.