[Road to Intermediate Python] Definieren Sie in Ihrer eigenen Klasse

Link zur Zusammenfassung

https://qiita.com/ganariya/items/fb3f38c2f4a35d1ee2e8

Einführung

Um Python zu studieren, habe ich eine Group Intelligence Library namens acopy kopiert.

In acopy werden viele interessante Python-Grammatiken und -Sprachen verwendet, und es wird zusammengefasst, dass es unter ihnen nützlich ist.

Dieses Mal werden wir für die Klasseninstanz verfügbar machen.

__contains__

Sie können in Ihrer Klasse eine spezielle Methode namens "contains" definieren.

Wenn Sie die Methode "contains" definieren, enthält die Klasse einen bestimmten Wert "item"? Kann einfach durch den Operator "in" ausgedrückt werden.

Konkretes Beispiel

Schauen wir uns zunächst die Version ohne __contains__ an.

class A:

    def __init__(self, x):
        self.arr = list(range(x))


'''
Yes
No
'''
a = A(10)
print(("No", "Yes")[3 in a.arr])
print(("No", "Yes")[23 in a.arr])

Definieren Sie diesmal die Klasse A und verwenden Sie $ x $, das Sie bei der Initialisierung erhalten haben Erstellen einer Liste von [0, x).

Sind nun $ 3,23 $ in Instanz a enthalten? Ich schreibe den Code "[3 in a.arr]", um es herauszufinden. Enthält dies 3 in dem Array namens arr, zum Beispiel a? Du kannst herausfinden.

Wenn die Klasse jedoch nur solche ** Einschlussbeziehungen ** nachschlägt, wird arr! Wenn es nur eines gibt, können Sie es intuitiver schreiben, indem Sie "contains" definieren.

class A:

    def __init__(self, x):
        self.arr = list(range(x))

    def __contains__(self, item):
        return item in self.arr


'''
Yes
No
'''
a = A(10)

print(("No", "Yes")[3 in a])
print(("No", "Yes")[23 in a])

Im Gegensatz zum vorherigen Quellcode haben wir die Methode __contains__ definiert. Nimmt diese Methode das in "item in instance" angegebene "Element" als Argument und schließt dieses Element ein? Du musst nur zurückkehren.

Schließlich

Es klingt nach einer weniger glücklichen Methode, kann aber beim Schreiben großer Codemengen hilfreich sein. Ich kenne immer noch nicht die spezifischen Punkte, über die ich mich freue ...

Recommended Posts

[Road to Intermediate Python] Definieren Sie in Ihrer eigenen Klasse
[Road to Intermediate Python] Definieren Sie die Funktion __getattr__ in der Klasse
So definieren Sie Ihr eigenes Ziel in Sage
Ein Weg zum mittleren Python
Versuchen Sie, Ihr eigenes Intro-Quiz mit Python zu verbessern
[Road to Intermediate] Grundlegendes zu Python-Eigenschaften
[Road to Intermediate Python] Installieren Sie Pakete in großen Mengen mit pip
[Road to Intermediate Python] Verwenden Sie die if-Anweisung in der Listeneinschlussnotation
[Road to Intermediate Python] Verwenden Sie ternäre Operatoren
[Road to Intermediate Python] Rufen Sie eine Klasseninstanz wie eine Funktion mit __call__ auf
Dynamisches Definieren von Variablen in Python
[LLDB] Erstellen Sie Ihren eigenen Befehl mit Python
Verwenden Sie einfach Ihre eigenen Funktionen in Python
Erstellen Sie Ihre eigene Diagrammstrukturklasse und deren Zeichnung mit Python
Verwendung von __slots__ in der Python-Klasse
[Road to Intermediate Python] Verwenden Sie Lambda-Ausdrücke
Holen Sie sich Ihre eigene IP-Adresse in Python
[Road to Intermediate Python] Zusammenfassung der Artikelverknüpfungen
[Python] Implementieren Sie Ihre eigene listenähnliche Klasse mit collection.UserList
Importieren Sie Ihre eigenen Module mit der Python-Entwicklung von Grasshopper
Python: Verwenden Sie Ihre eigene Klasse für Numpy Ndarray
Fallklasse in Python
Klassennotation in Python
Der Weg zur Aktualisierung von Splunkbase mit Ihrer eigenen Splunk-App, die mit Python v2 / v3 kompatibel ist
Memo zum Erstellen einer eigenen Box mit Peppers Python
Erstellen Sie Ihre eigenen Big Data in Python zur Validierung
[Einführung in die Udemy Python3 + -Anwendung] 66. Erstellen einer eigenen Ausnahme
Erstellen Sie Ihr eigenes Random Dot Stereogram (RDS) in Python.
Verwenden Sie CASA Toolkit in Ihrer eigenen Python-Umgebung
Versuchen Sie, die LED in Ihren eigenen PC einzubauen (leicht)
Konvertieren / Zurückgeben von Klassenobjekten in das JSON-Format in Python
So löschen Sie stdout in Python
Melden Sie sich auf der Website in Python an
Sprechen mit Python [Text zu Sprache]
Wie man in Python entwickelt
Post an Slack in Python
Verwendung der Methode __call__ in der Python-Klasse
Versuchen Sie, Ihre eigenen Objekte mit Prioritätswarteschlangen in Python zu sortieren
Wie Sie pyenv und pyenv-virtualenv auf Ihre eigene Weise verwenden
So definieren Sie mehrere Variablen in einer Python for-Anweisung
[Road to Intermediate Python] Aktiviert Vergleichsoperationen mit Originalklassen
[Python] Wenn Sie Ihr eigenes Paket im oberen Verzeichnis importieren und verwenden möchten
[Python] Wie man PCA mit Python macht
[Python] Erstelle deinen eigenen LINE-Bot
Konvertieren Sie Markdown in Python in PDF
In Python-Klassenvariablen versteckte Landminen
[Road to Intermediate Python] Geben Sie die Ausführungsmethode dynamisch anhand des Variablennamens an
Verwendung von SQLite in Python
Lesen Sie PNG-Chunks in Python (Klassenausgabe)
Im Python-Befehl zeigt Python auf Python3.8
Versuchen Sie, Trace in Python zu berechnen
Weg zu Intermediate Linux: Network Edition
Wie man MySQL mit Python benutzt
Versuchen Sie, sich mit Python auf Ihrem PC automatisch bei Netflix anzumelden
So verpacken Sie C in Python
Verwendung von ChemSpider in Python