¿Puedo marcar las variables como transitorias para que no sean decapadas?

Digamos que tengo una clase:

class Thing(object): cachedBar = None def __init__(self, foo): self.foo = foo def bar(self): if not self.cachedBar: self.cachedBar = doSomeIntenseCalculation() return self.cachedBar 

Para obtener algunos cálculos intensos, así que lo almaceno en la memoria para acelerar las cosas.

Sin embargo, cuando decapito una de estas clases no quiero que cachedBar de cachedBar .

¿Puedo marcar cachedBar como volátil / transitorio / no seleccionable?

De acuerdo con la documentación de Pickle , puedes proporcionar un método llamado __getstate__() , que devuelve algo que representa el estado que quieres que sea decapado (si no se proporciona, pickle usa thing.__dict__ ). Entonces, puedes hacer algo como esto:

 class Thing: def __getstate__(self): state = dict(self.__dict__) del state['cachedBar'] return state 

Esto no tiene que ser un dict, pero si es otra cosa, también debe implementar __setstate__(state) .

Implementar __getstate__ para devolver solo las partes de un objeto a ser decapado