Вы можете создать подкласс list
для печати при изменении списка.
Вот пример:
class EventList(list):
def __setitem__(self, key, value):
super(EventList, self).__setitem__(key, value)
print("The list has been changed!")
def __delitem__(self, value):
super(EventList, self).__delitem__(value)
print("The list has been changed!")
def __add__(self, value):
super(EventList, self).__add__(value)
print("The list has been changed!")
def __iadd__(self, value):
super(EventList, self).__iadd__(value)
print("The list has been changed!")
def append(self, value):
super(EventList, self).append(value)
print("The list has been changed!")
def remove(self, value):
super(EventList, self).remove(value)
l = EventList(["apples","bananas"])
l.append('test')
Печать:
The list has been changed!
ИЛИ
Просто сравните списки:
old_list = ["apples","bananas"]
new_list = ["apples","bananas"]
newer_list = ["apples","bananas", "oranges"]
old_list == new_list #true
old_list == newer_list #false
Это будет работать без подкласса, так как ==
сравнивает, если списки имеют одинаковые элементы в одних и тех же признаках, а не если они точното же самое по id или хэшу (в ламенах).Просто сохраните старый в переменной, затем, когда вы хотите проверить, просто используйте это.( примечание: это не позволяет автоматически вызывать печать. Это просто другой способ )