annotate Descriptors @ 244:eee52d5a4af8 default tip

created
author 127.0.0.1
date Sun, 30 Jun 2013 11:08:33 +0200
parents b75a4f07efa8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
52
5d730f3c9867 created
127.0.0.1
parents:
diff changeset
1 {{{#!python
5d730f3c9867 created
127.0.0.1
parents:
diff changeset
2 def __getattribute__(self, name):
114
86a4c6d05e8a created
127.0.0.1
parents: 53
diff changeset
3 if name in self.__dict__:
52
5d730f3c9867 created
127.0.0.1
parents:
diff changeset
4 return self.__dict__[name]
171
71c512ca0a31 created
127.0.0.1
parents: 127
diff changeset
5 for cls in self.__class__.mro():
114
86a4c6d05e8a created
127.0.0.1
parents: 53
diff changeset
6 if name in cls.__dict__:
126
52e13fc16385 created
127.0.0.1
parents: 124
diff changeset
7 attr = cls.__dict__[name]
230
d87445b74a2e created
127.0.0.1
parents: 171
diff changeset
8 if hasattr(attr.__class__, '__get__'):
126
52e13fc16385 created
127.0.0.1
parents: 124
diff changeset
9 return attr.__get__(self, cls)
52e13fc16385 created
127.0.0.1
parents: 124
diff changeset
10 return attr
114
86a4c6d05e8a created
127.0.0.1
parents: 53
diff changeset
11 return self.__getattr__(name)
124
4d503774ebc7 created
127.0.0.1
parents: 123
diff changeset
12
4d503774ebc7 created
127.0.0.1
parents: 123
diff changeset
13 def set_attr(thing, name, value):
230
d87445b74a2e created
127.0.0.1
parents: 171
diff changeset
14 if hasattr(thing.__class__, '__setattr__'):
126
52e13fc16385 created
127.0.0.1
parents: 124
diff changeset
15 thing.__setattr__(name, value)
127
3b9b9f339d50 created
127.0.0.1
parents: 126
diff changeset
16 return
171
71c512ca0a31 created
127.0.0.1
parents: 127
diff changeset
17 for cls in self.__class__.mro():
231
b75a4f07efa8 created
127.0.0.1
parents: 230
diff changeset
18 if (name in cls.__dict__ and
b75a4f07efa8 created
127.0.0.1
parents: 230
diff changeset
19 hasattr(cls.__dict__[name].__class__, '__set__')):
b75a4f07efa8 created
127.0.0.1
parents: 230
diff changeset
20 cls.__dict__[name].__set__(self, name, value)
127
3b9b9f339d50 created
127.0.0.1
parents: 126
diff changeset
21 return
3b9b9f339d50 created
127.0.0.1
parents: 126
diff changeset
22 self.__dict__[name] = value
124
4d503774ebc7 created
127.0.0.1
parents: 123
diff changeset
23
4d503774ebc7 created
127.0.0.1
parents: 123
diff changeset
24 def del_attr(thing, name):
230
d87445b74a2e created
127.0.0.1
parents: 171
diff changeset
25 if hasattr(thing.__class__, '__delattr__'):
126
52e13fc16385 created
127.0.0.1
parents: 124
diff changeset
26 thing.__delattr__(name)
127
3b9b9f339d50 created
127.0.0.1
parents: 126
diff changeset
27 return
171
71c512ca0a31 created
127.0.0.1
parents: 127
diff changeset
28 for cls in self.__class__.mro():
231
b75a4f07efa8 created
127.0.0.1
parents: 230
diff changeset
29 if (name in cls.__dict__ and
b75a4f07efa8 created
127.0.0.1
parents: 230
diff changeset
30 hasattr(cls.__dict__[name].__class__, '__delete__')):
b75a4f07efa8 created
127.0.0.1
parents: 230
diff changeset
31 cls.__dict__[name].__delete__(self, name)
127
3b9b9f339d50 created
127.0.0.1
parents: 126
diff changeset
32 return
3b9b9f339d50 created
127.0.0.1
parents: 126
diff changeset
33 del self.__dict__[name]
124
4d503774ebc7 created
127.0.0.1
parents: 123
diff changeset
34 }}}