[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/