Мне нужно вычислить «хэш», который позволяет мне однозначно идентифицировать объект, как его содержимое, так и родительский класс.Вычислить класс и экземпляр hash
Сравнивая эти «хэши», я хочу узнать, изменился ли объект с момента последнего сканирования.
Я нашел множество примеров того, как сделать объект хешируемым, но не столько о том, как вычислить хэш родительского класса.
Важно отметить, что сравнения выполняются во время различных исполнений. Я говорю это, потому что я думаю, что сравнение id()
объекта, так как id/address объекта может отличаться для разных исполнений.
Я думал прибегнуть к проверке, но я боюсь, что это может быть не очень эффективно, также я не очень уверен, как это будет работать, если родительский класс объекта наследуется от другого класса.
Если у меня был доступ к фактическим необработанным данным памяти, где хранится экземпляр и код класса, я мог бы просто вычислить хэш этого.
Любые идеи?
Вы можете просто сгенерировать хеш '__dict__' собственности вашего объекта, если вы хотите знать, если он изменился с момента последней проверки. Я не думаю, что здесь важно учитывать его класс. – lucasnadalutti
Я не уверен, какой случай не покрывается встроенным ['hash()'] (https://docs.python.org/2/library/functions.html#hash)? Можете ли вы расширить это? – TemporalWolf
@TemporalWolf, если у вас есть 'foo', экземпляр' class Foo' и do 'foo.bar = 1',' hash (foo) 'будет генерировать значение, которое останется неизменным после того, как вы сделаете' foo.bar = 2'. OP хочет обнаружить такое изменение. – lucasnadalutti