action22k ParDescr 8415
Михаил Авраменко, 441 группа ParDescr 7983
t1class ParDescr:t1class ParDescr:
22
3    def __init__(self, initial_value):3    def __init__(self, initial_value):
4        self.initial_value = initial_value4        self.initial_value = initial_value
5        self.values = {}5        self.values = {}
6        self.already_deleted = set()6        self.already_deleted = set()
77
8    def __get__(self, instance, owner):8    def __get__(self, instance, owner):
9        if instance is None:9        if instance is None:
10            return self.initial_value10            return self.initial_value
11        return self.values.get(id(instance), self.initial_value)11        return self.values.get(id(instance), self.initial_value)
1212
13    def __set__(self, instance, value):13    def __set__(self, instance, value):
14        instance_id = id(instance)14        instance_id = id(instance)
15        self.values[instance_id] = value15        self.values[instance_id] = value
16        if instance_id in self.already_deleted:16        if instance_id in self.already_deleted:
17            self.already_deleted.remove(instance_id)17            self.already_deleted.remove(instance_id)
1818
19    def __delete__(self, instance):19    def __delete__(self, instance):
20        instance_id = id(instance)20        instance_id = id(instance)
21        if instance_id in self.already_deleted:21        if instance_id in self.already_deleted:
22            raise KeyError22            raise KeyError
23        elif instance_id in self.values:23        elif instance_id in self.values:
24            del self.values[instance_id]24            del self.values[instance_id]
25            self.already_deleted.add(instance_id)25            self.already_deleted.add(instance_id)
26        else:26        else:
27            self.already_deleted.add(instance_id)27            self.already_deleted.add(instance_id)
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op