Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 19, 2010 22:30:14

Kogrom
От:
Зарегистрирован: 2009-12-03
Сообщения: 160
Репутация: +  0  -
Профиль   Отправить e-mail  

Как перехватить изменение элемента словаря/списка, в классе?

Есть такая альтернатива наследованию:

class UserDict:
def __init__(self, dict):
self._dict = dict

def __setitem__(self, k, v):
print "setitem"
self._dict[k] = v

def __getitem__(self, k):
return self._dict[k]


uDict = UserDict({1:2, 3:4})
uDict[5] = 6
print uDict[1]



Офлайн

#2 Авг. 21, 2010 21:13:48

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Как перехватить изменение элемента словаря/списка, в классе?

Kogrom
Есть такая альтернатива наследованию:
А что с остальными методами? :)



Офлайн

#3 Авг. 21, 2010 21:42:29

Kogrom
От:
Зарегистрирован: 2009-12-03
Сообщения: 160
Репутация: +  0  -
Профиль   Отправить e-mail  

Как перехватить изменение элемента словаря/списка, в классе?

knkd
А что с остальными методами? :)
Если кому-нибудь нужны будут ещё методы, он может наследовать мой класс и добавить, ибо встроенный словарик я не сильно “заинкапсулировал”. Я показал альтернативу, которая ленивым способом позволяет добиться состояния, когда не надо бояться, что какой-то неперегруженный метод “выстрелит” внезапно.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version