Supponiamo di avere una classe Python a cui voglio aggiungere una proprietà aggiuntiva.Patching classi in Python
C'è qualche differenza tra
import path.MyClass
MyClass.foo = bar
e usando qualcosa come:
import path.MyClass
setattr(MyClass, 'foo', bar)
?
In caso contrario, perché le persone sembrano fare il secondo anziché il primo? (Es. Qui http://concisionandconcinnity.blogspot.com/2008/10/chaining-monkey-patches-in-python.html) (. Con setattr è possibile utilizzare una variabile per il nome dell'attributo)
Perché non aggiornare la definizione della classe con il metodo aggiuntivo? Perché tutto questo materiale "magico" quando puoi semplicemente modificare la definizione della classe? –
Nel mio particolare problema quando ho chiesto questo, la classe proveniva da una libreria che non volevamo cambiare; e non potremmo sottoclassi. Sebbene sia d'accordo in generale. – interstar