Ist es möglich, eine Methode zu einer Objektklasse hinzuzufügen und sie für alle Objekte zu verwenden?Objektklasse überschreiben oder ändern
Antwort
In Python Attribute werden mit einem Wörterbuch implementiert:
>>> t = test()
>>> t.__dict__["foo"] = "bla"
>>> t.foo
'bla'
Aber für "Objekt", es wird ein 'dictproxy' als Schnittstelle so assignement zu verhindern:
>>> object.__dict__["test"] = "test"
TypeError: 'dictproxy' object does not support item assignment
Also nein, du kannst nicht.
Hinweis: Sie können den Metaklassen-Typ auch nicht direkt ändern. Aber da Python sehr flexibel ist, bin ich mir sicher, dass ein Guru einen Weg finden kann, um das zu erreichen, was Sie wollen. Jeder schwarze Zauberer hier in der Nähe :-)?
Vielleicht durch Metaklassen? –
Nein, Metaklassen wirken sich nur auf Klassen und Objekte aus, die sie verwenden, nicht auf vorhandenen integrierten Typen wie object, int, str, float und so weiter. Also, "alle Objekte" wird einfach nicht passieren. (Sie können natürlich neue Funktionen in __builtin__ einbauen, was sie ebenso weit verfügbar macht, aber sie werden keine METHODEN des eingebauten Typs des Objekts sein). –
>>> object.test = "Test" Traceback (most recent call last): File "", line 1, in TypeError: can't set attributes of built-in/extension type 'object'
Sieht nicht so aus. (Python 2.5.1)
so ist die Antwort NEIN?)) –
Ich denke schon, aber ich bin mir nicht 100% sicher. –
Nein, Pythons Interna sind sehr darauf bedacht, eingebaute Typen NICHT änderbar zu machen - sehr unterschiedliche Designwahlen von Ruby's. Es ist nicht möglich, das Objekt "monkeypatchable" zu machen, ohne tief in die C-codierten Interna zu verfallen und die Python-Laufzeit neu zu kompilieren (dies ist für den klassischen CPython, aber ich glaube, genau das gleiche Prinzip gilt für andere gute Implementierungen wie z als Jython und IronPython, nur s/C/Java/und S/C/C# bzw. ;-).
- 1. Erweitern einer Seite Objektklasse
- 2. XStream und Objektklasse Serialisierung
- 3. Native Objektklasse von WinControl?
- 4. Ändern einer Objektklasse in eine Unterklasse in Java
- 5. Objektklasse als Array
- 6. Gibt es eine Standardimplementierung der "trivialen Einschränkung" oder "Objektklasse"?
- 7. Mit Realm-Objekt direkt arbeiten oder Objektklasse zuordnen?
- 8. Wie Realm Objektklasse in RLMArray
- 9. Javascript Erstellen von dynamischen Objektklasse
- 10. Angeben der Objektklasse in clojure
- 11. Objektklasse wurde in cakephp3 entfernt
- 12. Mongoimport JSON-Dateiupdate oder überschreiben ..?
- 13. Was ist die Objektklasse in Java?
- 14. Ausschließen oder Überschreiben eines AAR-Manifests
- 15. Überschreiben/Ändern von C++ - Klassen mit DLLs
- 16. Vala Objektklasse Leichter als normale Klasse
- 17. Stackoverflow-Fehler - aus meiner Objektklasse instanziieren
- 18. Extract Felder aus Objektklasse in Typoskript passen
- 19. Hinzufügen der Eltern-ID Serialisierung als Objektklasse
- 20. Kann nicht Attribute von Objektklasse gesetzt
- 21. Java: Hat die Objektklasse einen Konstruktor?
- 22. Erbt die NoneType-Klasse die Objektklasse?
- 23. Java überschreiben Objekt gleich() Methode
- 24. überschreiben Beschreibung oder StringValue in Kakao?
- 25. Überschreiben (oder Schatten) einer Methode mit Erweiterungsmethode?
- 26. DOM-Element-spezifische Funktion überschreiben oder Funktion
- 27. Überschreiben Wordpress OpenGraph Metadaten und/oder wp_head
- 28. Methode überschreiben: gleiche Argumentlistentypen (oder KOMPATIBLE Typen)?
- 29. VS 2010 Major Publish Version ändern - Neue Anwendung oder überschreiben vorherige Version
- 30. Wie kann ich den Löschbestätigungsdialog in Windows überschreiben oder anpassen?
Duplizieren: http://StackOverflow.com/Questions/972/Adding-Amethod-to-an-existing-Object –