Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [ 27 ] 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

9.7.4 Контроль доступа к атрибутам

С помощью специальных методов getattr () , setattr () и delattr () Вы можете контролировать все обращения к атрибутам экземпляра. Приведем пример класса, реализующего собственные методы getattr () и setattr () и сохраняющего все атрибуты в частной переменной:

class VirtualAttributes: vdict = None

# Таким образом мы можем получить преобразованное

# имя атрибута vdict:

vdict name = locals().keys()[0]

def init (self):

# мы не можем записать self. vdict = {},

# т.к. при этом произойдет обращение к методу

# setattr

self. dict [self. vdict name] = {}

def getattr (self, name): return self. vdict[name]

def setattr (self, name, value): self. vdict[name] = value

if len(other. data) < len(self. data):

self, other = other, self res = set(other) for item in self. data.keys():

if res. data.has key(item): del res. data[item]

else:

res. data[item] = None return res

def ixor (self, other): # Оператор =

for item in other. data.keys(): if self. data.has key(item):

del self. data[item] else:

self. data[item] = None return self



Часть II

Встроенные возможности языка





0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [ 27 ] 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145