'Implement the deleter for the Python `descriptor protocol`_.
Args:
obj (HasProps) : An instance to delete this property from'

def __delete__(self, obj):

    if (self.name in obj._property_values):
        old_value = obj._property_values[self.name]
        del obj._property_values[self.name]
        self.trigger_if_changed(obj, old_value)
    if (self.name in obj._unstable_default_values):
        del obj._unstable_default_values[self.name]
