Was ist Monkey Patching in Python?
Das dynamische Ersetzen von Attributen zur Laufzeit wird als Monkey Patch bezeichnet.
Warum heißt es Monkey Patch?
Das Ersetzen von Attributen zur Laufzeit hat nichts mit Monkeys zu tun. Über den Ursprung gibt es zwei Meinungen von „affe patch“ online gefunden. :
1. Dieses Wort war ursprünglich „Guerrilla Patch“, eine Mischung aus „Armee“ und „Guerilla-Armee“, was bedeutet, dass dieser Teil im Englischen nicht „original“ ist ( Gorilla), und später wurde es als Affe (Affe) geschrieben.
2. Eine weitere Erklärung ist, dass diese Methode im Englischen Monkeying about (naughty) und daher Monkey Patch heißt, weil sie den ursprünglichen Code durcheinander bringt.
Der Name des Monkey-Patches ist etwas verwirrend, solange er der „Modul-Laufzeit-Ersatzfunktion“ entspricht.
Verwendung von Monkey Patch
1. Methode zum dynamischen Ersetzen von Modulen zur Laufzeit
Stackoverflow Oben gibt es zwei beliebte Beispiele.
consider a class that has a method get_data. This method does an external lookup (on a database or web API, for example), and various other methods in the class call it. However, in a unit test, you don't want to depend on the external data source - so you dynamically replace the get_data method with a stub that returns some fixed data.
Angenommen, eine Klasse hat eine Methode get_data. Diese Methode führt einige externe Abfragen durch (z. B. Abfragen der Datenbank oder der Web-API usw.) und wird von vielen anderen Methoden in der Klasse aufgerufen. Bei einem Unit-Test möchten Sie sich jedoch nicht auf externe Datenquellen verlassen. Sie ersetzen also diese get_data-Methode durch einen dummen Methodenstatus, der lediglich einige Testdaten zurückgibt.
Ein weiteres zitiertes Beispiel ist die Erklärung von Monkey Patch im Zope-Wiki:
from SomeOtherProduct.SomeModule import SomeClass def speak(self): return "ook ook eee eee eee!" SomeClass.speak = speak
Es gibt auch ein praktischeres Beispiel. Später wurde festgestellt, dass ujson höher ist Wenn Sie der Meinung sind, dass es teurer ist, den Import-JSON jeder Datei zu ändern, um UJSON als JSON zu importieren, oder wenn Sie testen möchten, ob das Ersetzen von JSON durch UJSON wie erwartet ist, müssen Sie nur Folgendes hinzufügen:
import json import ujson def monkey_patch_json(): json.__name__ = 'ujson' json.dumps = ujson.dumps json.loads = ujson.loads monkey_patch_json()
2. Es gibt viele Möglichkeiten, Module während der Laufzeit dynamisch hinzuzufügen
Dieses Szenario kommt auch häufig vor, wenn wir beispielsweise auf ein Modul in der allgemeinen Bibliothek des Teams verweisen und dieses anreichern möchten Für die Funktionen des Moduls können wir neben der Vererbung auch die Verwendung von Monkey Patch in Betracht ziehen.
Ich persönlich bin der Meinung, dass Monkey Patch zwar Komfort bietet, aber auch die Gefahr birgt, die Eleganz des Quellcodes zu beeinträchtigen.
PHP-Website auf Chinesisch, es gibt viele kostenlose Python-Video-Tutorials, jeder ist herzlich zum Lernen eingeladen!
Dieser Artikel wurde reproduziert von: https://www.jianshu.com/p/a19f936471e4
Das obige ist der detaillierte Inhalt vonWas ist Monkey Patching in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Python eignet sich für Datenwissenschafts-, Webentwicklungs- und Automatisierungsaufgaben, während C für Systemprogrammierung, Spieleentwicklung und eingebettete Systeme geeignet ist. Python ist bekannt für seine Einfachheit und sein starkes Ökosystem, während C für seine hohen Leistung und die zugrunde liegenden Kontrollfunktionen bekannt ist.

In diesem Artikel wird erläutert, wie die Leistung der Website verbessert wird, indem Apache -Protokolle im Debian -System analysiert werden. 1. Log -Analyse -Basics Apache Protokoll Datensätze Die detaillierten Informationen aller HTTP -Anforderungen, einschließlich IP -Adresse, Zeitstempel, URL, HTTP -Methode und Antwortcode. In Debian -Systemen befinden sich diese Protokolle normalerweise in /var/log/apache2/access.log und /var/log/apache2/error.log verzeichnis. Das Verständnis der Protokollstruktur ist der erste Schritt in der effektiven Analyse. 2. Tool mit Protokollanalyse Mit einer Vielzahl von Tools können Apache -Protokolle analysiert: Befehlszeilen -Tools: GREP, AWK, SED und andere Befehlszeilen -Tools.

Python zeichnet sich in Gaming und GUI -Entwicklung aus. 1) Spielentwicklung verwendet Pygame, die Zeichnungen, Audio- und andere Funktionen bereitstellt, die für die Erstellung von 2D -Spielen geeignet sind. 2) Die GUI -Entwicklung kann Tkinter oder Pyqt auswählen. Tkinter ist einfach und einfach zu bedienen. PYQT hat reichhaltige Funktionen und ist für die berufliche Entwicklung geeignet.

Der Vergleich zwischen Laravel und Python in der Entwicklungsumgebung und dem Ökosystem ist wie folgt: 1. Die Entwicklungsumgebung von Laravel ist einfach, nur PHP und Komponist sind erforderlich. Es bietet eine umfassende Auswahl an Erweiterungspaketen wie Laravelforge, aber die Wartung des Erweiterungspakets ist möglicherweise nicht rechtzeitig. 2. Die Entwicklungsumgebung von Python ist ebenfalls einfach, nur Python und PIP sind erforderlich. Das Ökosystem ist riesig und deckt mehrere Felder ab, aber das Versions- und Abhängigkeitsmanagement kann komplex sein.

PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

In diesem Artikel wird die DDOS -Angriffserkennungsmethode erörtert. Obwohl kein direkter Antragsfall von "Debiansniffer" gefunden wurde, können die folgenden Methoden zur Erkennung von DDOS -Angriffsanfällen verwendet werden: Effektive DDOS -Angriffserkennungstechnologie: Erkennung auf der Grundlage der Verkehrsanalyse: Identifizierung von DDOS -Angriffen durch Überwachung abnormaler Muster des Netzwerkverkehrs, z. Beispielsweise können Python -Skripte in Kombination mit Pyshark- und Colorama -Bibliotheken den Netzwerkverkehr in Echtzeit überwachen und Warnungen ausstellen. Erkennung auf der Grundlage der statistischen Analyse: Durch Analyse statistischer Merkmale des Netzwerkverkehrs wie Daten

In diesem Artikel werden Sie begleitet, wie Sie Ihr NginXSSL -Zertifikat auf Ihrem Debian -System aktualisieren. Schritt 1: Installieren Sie zuerst CertBot und stellen Sie sicher, dass Ihr System Certbot- und Python3-CertBot-Nginx-Pakete installiert hat. If not installed, please execute the following command: sudoapt-getupdatesudoapt-getinstallcertbotpython3-certbot-nginx Step 2: Obtain and configure the certificate Use the certbot command to obtain the Let'sEncrypt certificate and configure Nginx: sudocertbot--nginx Follow the prompts to select

Die Readdir -Funktion im Debian -System ist ein Systemaufruf, der zum Lesen des Verzeichnisgehalts verwendet wird und häufig in der C -Programmierung verwendet wird. In diesem Artikel wird erläutert, wie Readdir in andere Tools integriert wird, um seine Funktionalität zu verbessern. Methode 1: Kombinieren Sie C -Sprachprogramm und Pipeline zuerst ein C -Programm, um die Funktion der Readdir aufzurufen und das Ergebnis auszugeben:#include#include#includeIntmain (intargc, char*argv []) {Dir*Dir; structDirent*Eintrag; if (argc! = 2) {{
