Heim  >  Artikel  >  Backend-Entwicklung  >  Wie können Sie die in Python integrierten Typen mit benutzerdefinierten Methoden erweitern?

Wie können Sie die in Python integrierten Typen mit benutzerdefinierten Methoden erweitern?

Barbara Streisand
Barbara StreisandOriginal
2024-10-24 19:27:02961Durchsuche

How Can You Extend Python's Built-in Types with Custom Methods?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn