


Lassen Sie uns über gängige magische Methoden in Python sprechen
Was ist die magische Methode?
Magische Methoden sind in Python integrierte Funktionen, die normalerweise mit doppelten Unterstrichen beginnen und enden, wie z. B. __init__, __del__ usw. Sie werden magische Methoden genannt, weil sie automatisch aufgerufen werden, wenn bestimmte Operationen ausgeführt werden.
In Python können Sie die Methode dir() verwenden, um alle Methoden und Attribute eines Objekts anzuzeigen. Diejenigen, die mit doppelten Unterstrichen beginnen und enden, sind die magischen Methoden des Objekts. Nehmen Sie das String-Objekt als Beispiel:
>>> dir("hello") ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mo d__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'isl ower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', ' rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate' , 'upper', 'zfill']
Sie können sehen, dass das String-Objekt über die Methode __add__ verfügt, sodass Sie die Operation „+“ direkt für das String-Objekt in Python verwenden können Ruft die __add__-Methode des Objekts auf. Bei Bedarf können wir die Methode __add__ in unserer eigenen Klasse überschreiben, um den gewünschten Effekt zu erzielen.
class A(object): def __init__(self, str): self.str = str • def __add__(self, other): • print ('overwrite add method') • return self.str + "---" + other.str >>>a1 = A("hello") >>>a2 = A("world") >>>print (a1 + a2) >>>overwrite add method >>>"hello---world"
Wir haben die __add__-Methode neu geschrieben. Wenn Python die „+“-Operation erkennt, ruft es automatisch die neu geschriebene __add__-Methode auf. Wie Sie sehen, werden magische Methoden automatisch ausgeführt, nachdem bestimmte Ereignisse der Klasse oder des Objekts ausgelöst wurden. Wenn Sie eine Klasse mit speziellen Funktionen an Ihr eigenes Programm anpassen möchten, müssen Sie diese Methoden neu schreiben. Mit magischen Methoden können wir Klassen sehr bequem spezielle Funktionen hinzufügen.
Häufig verwendete magische Methoden
1. Konstruktion und Initialisierung
__new__, __init__ Diese beiden magischen Methoden werden häufig zum Initialisieren von Klassen verwendet. Als wir oben a1 = A("hello") erstellt haben, war das erste, was wir aufgerufen haben, __new__; die Initialisierung einer Klasse ist in zwei Schritte unterteilt:
- a Rufen Sie die neue Methode der Klasse auf und geben Sie das Instanzobjekt der Klasse zurück
- b .Rufen Sie die Init-Methode der Klasse auf, um das Instanzobjekt zu initialisieren
__new__(cls, *args, **kwargs) erfordert mindestens einen cls-Parameter, der die eingehende Klasse darstellt. Die letzten beiden Parameter werden an __init__ übergeben. In __new__ können Sie entscheiden, ob Sie die Methode __init__ weiterhin aufrufen möchten. Nur wenn __new__ eine Instanz der aktuellen Klasse cls zurückgibt, wird __init__ aufgerufen. In Kombination mit den Eigenschaften der __new__-Methode können wir den Singleton-Modus von Python implementieren, indem wir die __new__-Methode überschreiben:
class Singleton(object): def __init__(self): print("__init__") • def __new__(cls, *args, **kwargs): • print("__new__") • if not hasattr(Singleton, "_instance"): • print("创建新实例") • Singleton._instance = object.__new__(cls) • return Singleton._instance >>> obj1 = Singleton() >>> __new__ >>> 创建新实例 >>> __init__ >>> obj2 = Singleton() >>> __new__ >>> __init__ >>> print(obj1, obj2) >>> (<__main__.Singleton object at 0x0000000003599748>, <__main__.Singleton object at 0x0000000003599748>)
Sie können sehen, dass, obwohl zwei Objekte erstellt werden, die Adressen der beiden Objekte gleich sind.
2. Magische wie die Steuerung des Attributzugriffs
Methoden funktionieren hauptsächlich beim Zugriff, Definieren und Ändern der Eigenschaften eines Objekts. Die wichtigsten sind:
- __getattr__(self, name): Definieren Sie das Verhalten, wenn der Benutzer versucht, ein Attribut abzurufen.
- __getattribute__(self, name): Definieren Sie das Verhalten, wenn auf das Attribut dieser Klasse zugegriffen wird (rufen Sie zuerst diese Methode auf, um zu sehen, ob das Attribut vorhanden ist. Wenn nicht, rufen Sie dann getattr auf).
- __setattr__(self, name, value): Definiert das Verhalten, wenn ein Attribut gesetzt wird.
Die magische Methode self.__setattr__(name, Values) wird aufgerufen, wenn Attribute wie self.a=a initialisiert oder Instanzattribute wie ins.a=1 geändert werden; wenn die Instanz auf ein Attribut wie ins.a zugreift ist der Aufruf der magischen Methode a.__getattr__(name)
3. Containerklassenoperationen
Es gibt einige Methoden, mit denen wir unsere eigenen Container definieren können, wie z. B. die in Python integrierten List-, Tuple-, Dict-Container unterteilt in variable Container und unveränderliche Container.
Wenn Sie einen unveränderlichen Container anpassen, können Sie nur __len__ und __getitem__ definieren. Zusätzlich zu allen magischen Methoden des unveränderlichen Containers müssen Sie auch __setitem__ und __delitem__ definieren. Sie müssen auch __iter__ definieren.
- __len__(self): Gibt die Länge des Containers zurück
- __getitem__(self,key): Wenn Sie self[key] ausführen müssen, um das Objekt im Container aufzurufen, heißt diese Methode __setitem__(self,key, value) :Wenn Sie self[key] = value ausführen müssen, wird diese Methode aufgerufen
- __iter__(self):Wenn der Container für x in Container: ausgeführt werden kann oder iter(container) verwendet werden kann, müssen Sie diese Methode definieren
unten Implementieren Sie beispielsweise einen Container mit den allgemeinen Funktionen einer Liste und fügen Sie gleichzeitig einige andere Funktionen hinzu, z. B. den Zugriff auf das erste Element, das letzte Element, das Aufzeichnen der Anzahl der Zugriffe auf jedes Element usw.
class SpecialList(object): def __init__(self, values=None): self._index = 0 if values is None: self.values = [] else: self.values = values self.count = {}.fromkeys(range(len(self.values)), 0) def __len__(self):# 通过len(obj)访问容器长度 return len(self.values) def __getitem__(self, key):# 通过obj[key]访问容器内的对象 self.count[key] += 1 return self.values[key] def __setitem__(self, key, value):# 通过obj[key]=value去修改容器内的对象 self.values[key] = value def __iter__(self):# 通过for 循环来遍历容器 return iter(self.values) def __next__(self): # 迭代的具体细节 # 如果__iter__返回时self 则必须实现此方法 if self._index >= len(self.values): raise StopIteration() value = self.values[self._index] self._index += 1 return value def append(self, value): self.values.append(value) def head(self): # 获取第一个元素 return self.values[0] def last(self): # 获取最后一个元素 return self.values[-1]
Das Verwendungsszenario dieser Methode wird hauptsächlich verwendet, wenn Sie eine Containerklassen-Datenstruktur definieren müssen, die Ihren Anforderungen entspricht. Sie können beispielsweise versuchen, Datenstrukturen wie Baumstrukturen und verknüpfte Listen (alle) anzupassen sind bereits in Sammlungen verfügbar) oder einige Containertypen, die im Projekt angepasst werden müssen.
Zusammenfassung
Magische Methoden können den Code vereinfachen und die Lesbarkeit des Codes im Python-Code verbessern. Sie können viele Anwendungen magischer Methoden in gängigen Python-Bibliotheken von Drittanbietern sehen. Daher ist dieser aktuelle Artikel nur eine Einführung. Der tatsächliche Einsatz erfordert eine kontinuierliche Vertiefung des Verständnisses und eine angemessene Anwendung im hervorragenden Open-Source-Quellcode und in der eigenen Ingenieurpraxis.
Das obige ist der detaillierte Inhalt vonLassen Sie uns über gängige magische Methoden in Python sprechen. 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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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





PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

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 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.

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.

Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

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.
