Erweitern integrierter Python-Typen mit benutzerdefinierten Methoden
In Python sind die integrierten Typen wie dict und str unveränderlich und don Erlaubt keine direkten Methodenzusätze. Es ist jedoch möglich, eine ähnliche Funktionalität zu erreichen, indem der integrierte Typ in eine Unterklasse unterteilt und im globalen Namespace ersetzt wird.
Angenommen, Sie möchten dem Typ dict eine helloWorld()-Methode hinzufügen. Obwohl dies mit einer direkten Änderung nicht möglich ist, können Sie dict in eine Unterklasse umwandeln und die Methode in der Unterklasse definieren:
class MyDict(dict): def helloWorld(self): print("Hello world!")
Um diese Unterklasse auf alle zukünftigen Wörterbücher anzuwenden, ersetzen Sie den ursprünglichen dict-Typ im integrierten Namespace :
import __builtin__ __builtin__.dict = MyDict
Jetzt wird jedes erstellte Wörterbuch vom Typ MyDict sein und über die helloWorld()-Methode verfügen:
my_dict = {} my_dict.helloWorld() # Prints "Hello world!"
Beachten Sie jedoch, dass Objekte, die durch literale Syntax erstellt wurden (z. B. {}) wird weiterhin vom Vanilla-Dict-Typ sein und nicht über die benutzerdefinierte Methode verfügen:
vanilla_dict = {} vanilla_dict.helloWorld() # AttributeError: 'dict' object has no attribute 'helloWorld'
Dieser Ansatz bietet eine Möglichkeit, integrierte Typen mit benutzerdefinierten Methoden zu erweitern, ist jedoch nicht ohne Einschränkungen . Literale Syntaxobjekte bleiben beispielsweise Vanilla und Unterklassen erben keine benutzerdefinierten Attribute oder Methoden, die dem übergeordneten Typ hinzugefügt wurden.
Das obige ist der detaillierte Inhalt vonWie können Sie die in Python integrierten Typen mit benutzerdefinierten Methoden erweitern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!