Вот идея, которая будет использовать сам объект (ключ dict) для сохранения своего хэша.
Реализация dict не должна знать - она просто вызовет хеш .
Каждый «установщик» сделает кэшированное значение хэша None и принудительно пересчитает его.
class MyComplexObject:
def __init__(self, name, size):
self._name = name
self._size = size
self.hash_value = None
def __hash__(self):
if self.hash_value is None:
# heavy calculations goes here
# the result of the calculations is 7 (as an example)
self.hash_value = 7
return self.hash_value
@property
def name(self):
return self._name
@name.setter
def name(self, name):
self._name = name
self.hash_value = None
@property
def size(self):
return self._size
@size.setter
def size(self, size):
self._size = size
self.hash_value = None
Вот что вы ищете;) http://www.sothink.com/product/flashdecompiler/index.htm
Упакованные файлы AIR (файлы с расширением .air) являются файлами ZIP. Вы можете использовать любую программу ZIP, чтобы разделить их.
Однако приложения AIR могут быть написаны на Flash, Flex или HTML / JavaScript. Если приложение, на которое вы хотите посмотреть, не последнее, вам понадобится декомпилятор Flash или Flex.