Je crée une classe LazyLoader qui télécharge des fichiers depuis S3 vers le système de fichiers local, mais seulement s'ils n'ont pas été téléchargés auparavant. Cette classe supprime les éléments qu'elle a téléchargés une fois qu'ils sont détruits :
def __del__(self):
"""Remove downloaded files when this object is deleted."""
for downloaded_file in self.loaded_data.values():
os.remove(downloaded_file)
Les tests passent, mais après que pytest m'ait dit que les tests ont passé, j'obtiens :
Exception ignored in: <bound method LazyLoader.__del__ of LazyLoader({})>
Traceback (most recent call last):
File "my_lazy_loader.py", line 47, in __del__
TypeError: 'NoneType' object is not callable
La ligne 47 est os.remove(downloaded_file)
. Donc os.remove is None
évalue à True
. Pourquoi ? Comment je peux arranger ça ?
Si je déplace le code dans __del__
à une méthode clean()
je n'ai pas ce problème.