Erweiterungsmethoden in Python
Funktioniert die Python haben die Erweiterung Methoden wie C#? Ist es möglich, eine Methode aufzurufen, wie:
MyRandomMethod()
auf vorhandene Typen wie int
?
myInt.MyRandomMethod()
Kommentare dem Thema
klingt wie "monkey-patching"
InformationsquelleAutor der Frage Joan Venge | 2009-02-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie hinzufügen, was Methoden, die Sie gerne auf class-Objekte, die in Python definiert-code (AKA monkey-patching):
Funktioniert nicht auf builtin-Typen, weil Ihre
__dict__
ist nicht beschreibbar (ist es eindictproxy
).Also Nein, es gibt keine "echte" Erweiterung Methode-Mechanismus in Python.
InformationsquelleAutor der Antwort Torsten Marek
nicht sicher, ob das, was Sie fordern, aber Sie können die Erweiterung der vorhandenen Arten und rufen Sie dann, was Sie wie auf die neue Sache:
hoffe, dass klärt Ihre Frage
InformationsquelleAutor der Antwort SilentGhost
Ich hatte großes Glück mit der Methode, die hier beschrieben:
http://mail.python.org/pipermail/python-dev/2008-January/076194.html
Ich habe keine Ahnung, ob es funktioniert auf gelieferten obwohl.
InformationsquelleAutor der Antwort hernan43
Weitere option ist das überschreiben der meta-Klasse. Dies können Sie unter anderem angeben, die Funktionen, die vorhanden sein sollten in allen Klassen.
Dieser Artikel beginnt es zu besprechen:
http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html
InformationsquelleAutor der Antwort tsellon
Es kann getan werden, mit Forbbiden Obst (https://pypi.python.org/pypi/forbiddenfruit)
Installieren forbiddenfruit:
Dann können Sie verlängern built-in-Typen:
Verbotene Frucht ist grundsätzlich abhängig von der C-API, es funktioniert nur auf cpython-Implementierungen und funktionieren nicht auf andere python-Implementierungen wie Jython, pypy, etc.
InformationsquelleAutor der Antwort Rustam Ganeyev