Случай использования: у меня есть удаленная (медленная чтение) база данных, из которой я получаю некоторые данные через сопоставленные классы ORM.
Я бы хотел хранить временные данные без базы данных вместе с данными ORM, и я не хочу загрязнять пространство имен сопоставленного класса (которое используют другие люди) кучей временных атрибутов, чтобы я мог хранить некоторые объекты конкретные данные. Что я действительно хотел бы сделать, так это использовать их в качестве ключей к диктовке.
Я видел эту ветку , поэтому я знаю, что это можно сделать, но мне не нравится пример:
def __hash__( self ):
return id( self ) if self.id is None else hash( self.id )
Поскольку мой вариант использования включает в себя первичный ключ auto_increment set db set, который не будет существовать до окончания сброса. Потенциально изменяющиеся хэши - это одно из главных факторов хэширования, и я бы хотел этого избежать.
Я мог бы попытаться исправить это, если бы вставил флеш в __hash__
, но это кажется слишком большим побочным эффектом, чтобы быть хорошей идеей.
Итак, вопрос в следующем: есть ли хороший способ использовать экземпляры классов, отображаемых в ORM, в качестве ключей к диктовке, или есть другой / лучший способ связать временные данные с объектом без загрязнения его пространства имен?