Selon ce poste:Quelle est l'implémentation la plus proche de '@transient lazy val' de scala dans Python?
Python memoising/deferred lookup property decorator
Un décorateur mnémoniques peut être utilisé pour déclarer une propriété paresseuse dans une classe. Il y a même un paquet « officiel » qui peut être utilisé hors de la boîte:
https://pypi.python.org/pypi/lazy
cependant, ces deux la mise en œuvre a un grave problème: toutes les valeurs mémorisées seront tentées à décaper par python. Si ces valeurs ne peuvent pas être copiées, le programme se décomposera.
Ma question est la suivante: existe-t-il un moyen facile de mettre en œuvre la déclaration "@transient lazy val" de scala sans trop de bricolage? Cette déclaration doit mémoriser la propriété en cas d'invocation multiple et la supprimer une fois que la classe/l'objet est sérialisé.
je pensais, mais je ne trouve pas de mise en œuvre de __getstate__ dans la superclasse comme point de référence, ainsi que, le point de décorateur est la simplicité, si le décorateur ne peut pas affecter composition de décapage seul, alors je ne pense pas que c'est un décorateur très pratique. – tribbloid
en tant que états de la documentation de pickle Python: 'S'il n'y a pas de méthode __getstate __(), __dict__ de l'instance est pickled'. Donc, vous pouvez simplement pickle/unpickle superclasse '__dict__' vous-même. Possibilité de gérer de telles propriétés uniquement avec des décorateurs ... Hmm, je ne suis pas sûr de cela – agg3l