# coding: latin-1 import copy class classe_incluse: def __init__ (self) : self.attr = 3 class exemple_classe: def __init__ (self) : self.inclus = classe_incluse () self.rnd = 42 def __copy__ (self): copie = exemple_classe () copie.rnd = self.rnd copie.inclus = copy.copy (self.inclus) return copie nb = exemple_classe () nb2 = copy.copy (nb) # copie explicite, # utilise l'opérateur __copy__, # cette ligne est équivalente à # nb2 = nb.__copy__() print nb.rnd # affiche 42 print nb2.rnd # affiche 42 print nb.inclus.attr # affiche 3 print nb2.inclus.attr # affiche 3 nb.inclus.attr = 0 nb.rnd = 1 print nb.rnd # affiche 1 print nb2.rnd # affiche 42 print nb.inclus.attr # affiche 0 print nb2.inclus.attr # affiche 3 (c'est le résultat souhaité)