https://qiita.com/ganariya/items/fb3f38c2f4a35d1ee2e8
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.
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.
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