Patching classi in Python
-
12-09-2019 - |
Domanda
Supponiamo che io sono una classe Python che voglio aggiungere una proprietà in più per.
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é la gente sembrano fare il secondo piuttosto che il primo? (Ad esempio qui http:. //Concisionandconcinnity.blogspot. com / 2008/10 / concatenamento-monkey-patch-in-python.html )
Soluzione
Le dichiarazioni sono equivalenti, ma setattr potrebbero essere utilizzati perché è la scelta più dinamica dei due (con setattr è possibile utilizzare una variabile per il nome dell'attributo.)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow