[Python-de] Ersetzen einer Funktion in einem Modul
Georg Mischler
schorsch at schorsch.com
Don Aug 21 08:21:07 EDT 2003
Thomas Fanslau wrote:
> Ich würde gerne in einem Modul eine Funktion ersetzen, so das die Modul
> internen Funktionen anstelle der eingebauten meine Variante aufrufen
> (hier mal verkürzt):
>
> + import cgi
> +
> + def parse_qsl(qs, keep_blank_values=0, strict_parsing=0):
> + pass
> +
> + cgi.__dict__["parse_qsl"] = parse_qsl
> +
> + form = cgi.FieldStorage(keep_blank_values=1)
>
> Ich bin mir sicher, das schon mal unter 2.2 so oder so ähnlich gelöst zu
> haben. Aber in 2.01 will mir das nicht gelingen :(
Was spricht gegen die einfache Variante?
cgi.parse_qsl = parse_qsl
Ich hab's nicht ausprobiert, aber wenn das cgi-Modul keine
handgestrickte Dispatch-Mechanismen verwendet, dann sollte das
problemlos und portabel funktionieren.
Die Verwendung von __dict__ ist grundsaetzlich problematisch,
da sie sich auf ein Implementationsdetail verlaesst, dessen
identische Funktion zwischen verschiedenen Python-Versionen
nicht gewaehrleistet ist.
-schorsch
--
Georg Mischler -- simulations developer -- schorsch at schorsch com
+schorsch.com+ -- lighting design tools -- http://www.schorsch.com/