diff --git a/echo/containers.py b/echo/containers.py index b26cdd2f..a061df44 100644 --- a/echo/containers.py +++ b/echo/containers.py @@ -1,3 +1,5 @@ +import weakref + from . import CallbackProperty, HasCallbackProperties from .callback_container import CallbackContainer @@ -184,9 +186,11 @@ def _default_setter(self, instance, value): dcb = dynamic_callback() wrapped_list = CallbackList(dcb, value) + _instance = weakref.ref(instance) def callback(*args, **kwargs): - self.notify(instance, wrapped_list, wrapped_list) + if _instance() is not None: + self.notify(_instance(), wrapped_list, wrapped_list) dcb.function = callback @@ -210,9 +214,11 @@ def _default_setter(self, instance, value): dcb = dynamic_callback() wrapped_dict = CallbackDict(dcb, value) + _instance = weakref.ref(instance) def callback(*args, **kwargs): - self.notify(instance, wrapped_dict, wrapped_dict) + if _instance() is not None: + self.notify(_instance(), wrapped_dict, wrapped_dict) dcb.function = callback