


Detaillierte Erläuterung der Python-Magie-Methode zur Attributkonvertierung und Klassendarstellung
Typkonvertierungsmagie
Typkonvertierungsmagie ist eigentlich das Ergebnis der Implementierung von Factory-Funktionen wie str und int. Normalerweise verfügen diese Funktionen auch über Typkonvertierungsfunktionen:
•__int__(self)
•In einen Ganzzahltyp konvertieren, entsprechend der int-Funktion.
•__long__(selbst)
•In einen Long-Integer-Typ konvertieren, entsprechend der Long-Funktion.
•__float__(self)
•In einen Gleitkommatyp konvertieren, entsprechend der Float-Funktion.
•__komplex__(selbst)
•Konvertieren Sie in einen komplexen Zahlentyp, der der komplexen Funktion entspricht.
•__oct__(selbst)
•In Oktal konvertieren, entsprechend der Oktalfunktion.
•__hex__(self)
•Umwandeln in Hexadezimalzahl, entsprechend der Hex-Funktion.
•__index__(self)
•Zuerst sollte diese Methode eine Ganzzahl zurückgeben, die int oder long sein kann. Diese Methode ist an zwei Stellen gültig. Erstens ist der von der Indexfunktion im Operatormodul erhaltene Wert der Rückgabewert dieser Methode. Die folgende Codedemonstration wird speziell durchgeführt.
•__trunc__(self)
• Wird aufgerufen, wenn math.trunc(self) verwendet wird. __trunc__ gibt eine Ganzzahlkürzung vom Typ self zurück (normalerweise ein long).
•__zwingen__(sich selbst, andere)
• Diese Methode entspricht dem Ergebnis der integrierten Funktion „coerce“ (diese Funktion wurde seit Python 3.0 entfernt, was bedeutet, dass diese magische Methode bedeutungslos ist. Ob nachfolgende Versionen erneut Unterstützung hinzufügen werden, Es hängt von der offiziellen Website ab.)•Die Funktion dieser Funktion besteht darin, zwei verschiedene numerische Typen zwangsweise in denselben Typ umzuwandeln, zum Beispiel:
Die Methode
Wenn wir diese magische Methode definieren und die Konvertierung nicht abgeschlossen werden kann, sollte None zurückgegeben werden.
Hier gibt es einen wichtigen Mechanismus, z. B. 1 1.0. Es ruft zuerst die Coerce-Funktion auf, um sie in denselben Typ umzuwandeln, und führt sie dann aus. Aus diesem Grund ist 1 1.0 = 2.0 Der tatsächliche Betrieb nach der Konvertierung ist 1.0 1.0. Es ist nicht überraschend, ein solches Ergebnis zu erzielen.
Codebeispiel:
class Foo(object): def __init__(self, x): self.x = x def __int__(self): return int(self.x) + 1 def __long__(self): return long(self.x) + 1 a = Foo(123) print int(a) print long(a) print type(int(a)) print type(long(a))
int zurückgeben, wenn wir willkürlich andere Typen zurückgeben, z. B. string (str). , list (list) usw. wird ein Fehler gemeldet.
def __int__(self): return str(self.x)
def __int__(self): return list(self.x)
class Foo(object): def __init__(self, x): self.x = x def __int__(self): return long(self.x) + 1 def __long__(self): return int(self.x) + 1 a = Foo(123) print int(a) print long(a) print type(int(a)) print type(long(a))
__index__(self):
Erstens entspricht es Operator.index(), Operator.index(a) entspricht a.__index__():
import operator class Foo(object): def __init__(self, x): self.x = x def __index__(self): return self.x + 1 a = Foo(10) print operator.index(a)
class Foo(object): def __init__(self, x): self.x = x def __index__(self): return 3 a = Foo('scolia') b = [1, 2, 3, 4, 5] print b[a] print b[3]
class Foo(object): def __init__(self, x): self.x = x def __index__(self): return int(self.x) a = Foo('1') b = Foo('3') c = [1, 2, 3, 4, 5] print c[a:b]
a = Foo('1') b = Foo('3') c = slice(a, b) print c d = [1, 2, 3, 4, 5] print d[c]
__coerce__(selbst, andere):
Codebeispiel:
class Foo(object): def __init__(self, x): self.x = x def __coerce__(self, other): return self.x, str(other.x) class Boo(object): def __init__(self, x): self.x = x def __coerce__(self, other): return self.x, int(other.x) a = Foo('123') b = Boo(123) print coerce(a, b) print coerce(b, a)
Zusammenfassung: Es ist eine magische Methode, die den ersten Parameter aufruft.
Die Darstellung der Klasse sind tatsächlich die externen Merkmale. Wenn beispielsweise die print-Anweisung verwendet wird, ist das, was gedruckt wird, tatsächlich die Ausgabe der entsprechenden Funktion:
•__str__(self)
• Definieren Sie das Verhalten, das auftreten soll, wenn str() für eine Instanz Ihrer Klasse aufgerufen wird. Weil print standardmäßig die Funktion str() aufruft.
•__repr__(self)
• Definieren Sie das Verhalten, das auftreten soll, wenn repr() für eine Instanz Ihrer Klasse aufgerufen wird. Der Hauptunterschied zwischen str() und repr() ist ihre Zielgruppe. repr() gibt eine maschinenlesbare Ausgabe zurück, während str() eine menschenlesbare Ausgabe zurückgibt. Die Funktion repr() wird standardmäßig im Austauschmodus aufgerufen
•Funktion.
•__unicode__(self)
• Definieren Sie das Verhalten, das auftreten soll, wenn unicode() für eine Instanz Ihrer Klasse aufgerufen wird. unicode() ist str() sehr ähnlich, gibt jedoch einen Unicode-String zurück. Beachten Sie, dass, wenn str() für Ihre Klasse aufgerufen wird, Sie aber nur __unicode__() definieren, dies nicht der Fall ist
•Arbeiten. Sie sollten __str__() definieren, um sicherzustellen, dass beim Aufruf der richtige Wert zurückgegeben wird. Nicht jeder hat Lust, unicode() zu verwenden.
•__format__(self, formatstr)
• Definieren Sie das Verhalten, das auftritt, wenn eine Instanz Ihrer Klasse zum Formatieren mithilfe der neuen Formatzeichenfolgenmethoden verwendet wird. Beispielsweise führt „Hallo, {0:abc}!“.format(a) dazu, dass a.__format__(„abc“) aufgerufen wird. Dies ist nützlich, um Ihre eigenen numerischen oder Zeichenfolgentypen
zu definieren• ist sehr aussagekräftig, Sie können einige spezielle Formatierungsoptionen angeben.
•__hash__(self)
• Definieren Sie das Verhalten, das auftreten soll, wenn hash() für eine Instanz Ihrer Klasse aufgerufen wird. Für einen schnellen Vergleich in einem Wörterbuch muss es eine Ganzzahl zurückgeben.
•Bitte beachten Sie, dass Sie bei der Implementierung von __hash__ normalerweise auch __eq__ implementieren. Es gibt die folgende Regel: a == b impliziert hash(a) == hash(b) . Mit anderen Worten: Die Rückgabewerte der beiden magischen Methoden sollten konsistent sein.
•Das Konzept des „hashbaren Objekts“ wird hier vorgestellt. Zunächst sollte der Hashwert eines hashbaren Objekts während seines Lebenszyklus unverändert bleiben, und um den Hashwert zu erhalten, muss die Methode __hash__ implementiert werden. Hash-Objekte sind vergleichbar, was bedeutet, dass __eq__ oder
implementiert werden•Die __cmp__-Methode und wenn die Hash-Objekte gleich sind, müssen ihre Hash-Werte gleich sein. Um diese Funktion zu implementieren, muss der Rückgabewert von __eq__ mit __hash__ identisch sein.
•Hashbare Objekte können als Wörterbuchschlüssel und Sammlungsmitglieder verwendet werden, da diese Datenstrukturen intern Hashwerte verwenden. Alle in Python integrierten unveränderlichen Objekte wie Tupel, Zeichenfolgen, Zahlen usw. können gehasht werden, während veränderliche Objekte wie Listen nicht gehasht werden können
• Wörterbücher und mehr.
• Instanzen benutzerdefinierter Klassen sind standardmäßig hashbar und nicht mit irgendjemandem außer sich selbst gleich, da ihr Hashwert von der ID-Funktion stammt. Dies bedeutet jedoch nicht, dass Hash (a) == id (a) ist. Bitte achten Sie auf diese Funktion.
•__nonzero__(self)
• Definieren Sie das Verhalten, das auftreten soll, wenn bool() für eine Instanz Ihrer Klasse aufgerufen wird. Diese Methode sollte „True“ oder „False“ zurückgeben, je nachdem, welchen Wert sie zurückgeben soll. (In python3.x in __bool__ geändert)
•__dir__(self)
• Definieren Sie das Verhalten, das auftreten soll, wenn dir() für eine Instanz Ihrer Klasse aufgerufen wird. Diese Methode sollte eine Liste von Eigenschaften an den Benutzer zurückgeben.
•__sizeof__(self)
• Definieren Sie das Verhalten, das auftreten soll, wenn sys.getsizeof() für eine Instanz Ihrer Klasse aufgerufen wird. Diese Methode sollte die Größe Ihres Objekts in Bytes zurückgeben. Dies ist normalerweise sinnvoller für Python-Klassen, die als C-Erweiterungen implementiert sind, was zum Verständnis dieser Erweiterungen hilfreich sein kann.
Hier gibt es nichts besonders Schwieriges zu verstehen, daher wird das Codebeispiel weggelassen.
Die obige Python-Zaubermethode – detaillierte Erläuterung der Attributkonvertierung und Klassendarstellung – ist der gesamte vom Herausgeber geteilte Inhalt. Ich hoffe, dass er Ihnen eine Referenz geben kann, und ich hoffe, dass Sie Script Home unterstützen.

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 und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Im VS -Code können Sie das Programm im Terminal in den folgenden Schritten ausführen: Erstellen Sie den Code und öffnen Sie das integrierte Terminal, um sicherzustellen, dass das Codeverzeichnis mit dem Terminal Working -Verzeichnis übereinstimmt. Wählen Sie den Befehl aus, den Befehl ausführen, gemäß der Programmiersprache (z. B. Pythons Python your_file_name.py), um zu überprüfen, ob er erfolgreich ausgeführt wird, und Fehler auflösen. Verwenden Sie den Debugger, um die Debugging -Effizienz zu verbessern.

VS -Code kann zum Schreiben von Python verwendet werden und bietet viele Funktionen, die es zu einem idealen Werkzeug für die Entwicklung von Python -Anwendungen machen. Sie ermöglichen es Benutzern: Installation von Python -Erweiterungen, um Funktionen wie Code -Abschluss, Syntax -Hervorhebung und Debugging zu erhalten. Verwenden Sie den Debugger, um Code Schritt für Schritt zu verfolgen, Fehler zu finden und zu beheben. Integrieren Sie Git für die Versionskontrolle. Verwenden Sie Tools für die Codeformatierung, um die Codekonsistenz aufrechtzuerhalten. Verwenden Sie das Lining -Tool, um potenzielle Probleme im Voraus zu erkennen.

VS -Code -Erweiterungen stellen böswillige Risiken dar, wie das Verstecken von böswilligem Code, das Ausbeutetieren von Schwachstellen und das Masturbieren als legitime Erweiterungen. Zu den Methoden zur Identifizierung böswilliger Erweiterungen gehören: Überprüfung von Verlegern, Lesen von Kommentaren, Überprüfung von Code und Installation mit Vorsicht. Zu den Sicherheitsmaßnahmen gehören auch: Sicherheitsbewusstsein, gute Gewohnheiten, regelmäßige Updates und Antivirensoftware.

VS -Code kann unter Windows 8 ausgeführt werden, aber die Erfahrung ist möglicherweise nicht großartig. Stellen Sie zunächst sicher, dass das System auf den neuesten Patch aktualisiert wurde, und laden Sie dann das VS -Code -Installationspaket herunter, das der Systemarchitektur entspricht und sie wie aufgefordert installiert. Beachten Sie nach der Installation, dass einige Erweiterungen möglicherweise mit Windows 8 nicht kompatibel sind und nach alternativen Erweiterungen suchen oder neuere Windows -Systeme in einer virtuellen Maschine verwenden müssen. Installieren Sie die erforderlichen Erweiterungen, um zu überprüfen, ob sie ordnungsgemäß funktionieren. Obwohl VS -Code unter Windows 8 möglich ist, wird empfohlen, auf ein neueres Windows -System zu upgraden, um eine bessere Entwicklungserfahrung und Sicherheit zu erzielen.

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

VS Code ist der vollständige Name Visual Studio Code, der eine kostenlose und open-Source-plattformübergreifende Code-Editor und Entwicklungsumgebung von Microsoft ist. Es unterstützt eine breite Palette von Programmiersprachen und bietet Syntax -Hervorhebung, automatische Codebettel, Code -Snippets und intelligente Eingabeaufforderungen zur Verbesserung der Entwicklungseffizienz. Durch ein reiches Erweiterungs -Ökosystem können Benutzer bestimmte Bedürfnisse und Sprachen wie Debugger, Code -Formatierungs -Tools und Git -Integrationen erweitern. VS -Code enthält auch einen intuitiven Debugger, mit dem Fehler in Ihrem Code schnell gefunden und behoben werden können.

VS -Code kann nicht nur Python ausführen, sondern bietet auch leistungsstarke Funktionen, einschließlich: automatisch Identifizieren von Python -Dateien nach der Installation von Python -Erweiterungen, Bereitstellung von Code -Abschluss, Syntax -Hervorhebung, Debugging und anderen Funktionen. Erweiterungen stützen sich auf die installierte Python -Umgebung und dienen als Bearbeitung von Brückenverbindungen und Python -Umgebung. Zu den Debugging-Funktionen gehören das Einstellen von Haltepunkten, das Schritt-für-Schritt-Debugging, das Anzeigen von Variablenwerten und die Verbesserung der Debugging-Effizienz. Das integrierte Terminal unterstützt das Ausführen komplexer Befehle wie Unit -Tests und Paketverwaltung. Unterstützt erweiterte Konfiguration und verbessert Funktionen wie Codeformatierung, Analyse und Versionskontrolle.
