https://qiita.com/ganariya/items/fb3f38c2f4a35d1ee2e8
Afin d'étudier Python, j'ai copié une bibliothèque d'intelligence de groupe appelée acopy.
Dans acopy, de nombreuses grammaires et idiomes Python intéressants sont utilisés, et il est résumé que c'est pratique parmi eux.
Cette fois, nous allons rendre disponible pour l'instance de classe.
__contains__
Vous pouvez définir une méthode spéciale dans votre classe appelée «contains».
Si vous définissez la méthode __contains__
, la classe contient-elle une certaine valeur ʻitem? Peut être simplement exprimé par l'opérateur ʻin
.
Tout d'abord, regardons la version sans __contains__
.
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])
De manière appropriée cette fois, définissez la classe A et utilisez $ x $ reçus à l'initialisation Création d'une liste de «[0, x)».
Maintenant, 3,23 $ sont-ils inclus dans l'instance a respectivement? J'écris le code «[3 in a.arr]» pour le savoir. Cela inclut-il 3 dans le tableau appelé arr par exemple a? Vous pouvez le découvrir.
Cependant, si la classe recherche uniquement de telles ** relations d'inclusion **, arr! S'il n'y en a qu'un, vous pouvez l'écrire plus intuitivement en définissant __contains__
.
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])
Contrairement au code source précédent, nous avons défini la méthode __contains__
.
Cette méthode prend-elle ʻitem donné dans ʻitem in instance
comme argument et inclut cet élément? Il vous suffit de revenir.
Cela ressemble à une méthode moins heureuse, mais elle peut être utile lors de l'écriture de grandes quantités de code. Je ne connais toujours pas les points spécifiques qui me plaisent ...