Ich möchte so etwas machen ...
%Vor%Was "Hallo Welt!" ausdrucken würde
EDIT: Siehe Kann ich hinzufügen benutzerdefinierte Methoden / Attribute zu integrierten Python-Typen?
In CPython können Sie Ctypes verwenden, um auf die C-API des Interpreters zuzugreifen. Auf diese Weise können Sie zur Laufzeit eingebaute Typen ändern.
%Vor%Obwohl dies interessant ist und vielleicht interessant ist, um es herauszufinden ... nicht verwenden Sie es im produktiven Code. Unterlasse einfach den eingebauten Typ oder versuche herauszufinden, ob es noch einen anderen gibt, vielleicht eher pythonisch, gehe auf dein Problem zu.
Ruby Weg:
%Vor%Python Weg:
%Vor% Wo Roman
auf einer festen Liste von eingebauten Typen oder irgendetwas mit einer __int__
-Methode arbeitet.
Es ist eine Implementierungsbeschränkung von CPython, dass Sie keine Attribute von integrierten / Erweiterungstypen festlegen können. Es wird von kulturellen Vorlieben begleiten Affen Patching für Stand-alone-Funktionen, benutzerdefinierte Klassen, die als Attribut gewünschtes Objekt (oder auch Subklassen in seltenen Fällen).
zu vermeiden Dafür können Sie str
ableiten.
Obwohl technisch möglich, bauen Sie in den meisten Fällen Buildklassen (wie str
) ab, aber Sie suchen nach einer 'has-a'-Beziehung, nicht' is-a ', daher sollte composition verwendet werden Vererbung (dh Sie sollten eine Klasse mit einem String als Instanzattribut und nicht als Unterklassenzeichenfolge erstellen).
Sie nicht. Verwenden Sie separate Wörterbücher, um (logisch gesprochen) Informationen an unveränderliche Werte wie Zeichenfolgen oder Zahlen anzuhängen (der String- oder Zahlenwert als Schlüssel, die Information als entsprechender Wert im Diktat).
Sie können nicht, es ist nicht Pythonic. Monkey-Patching ist kein allgemein verwendetes Feature von Python, also für die Performance - glaube ich - Gründe, warum Sie es nicht mit den eingebauten Klassen oder Instanzen davon machen können.
Tatsächlich hat es seinen eigenen Namen in Python: duck-punching.
Tags und Links python string attributes polymorphism