[Road to Intermediate Python] Définissez dans votre propre classe

Lien vers le résumé

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

introduction

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.

Exemple concret

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.

finalement

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

Recommended Posts

[Road to Intermediate Python] Définissez dans votre propre classe
[Route vers Python intermédiaire] Définir la fonction __getattr__ dans la classe
Comment définir votre propre cible dans Sage
Une route vers Python intermédiaire
Essayez d'améliorer votre propre quiz d'introduction avec Python
[Road to Intermediate] Comprendre les propriétés Python
[Road to Intermediate Python] Installer des packages en masse avec pip
[Route vers Python intermédiaire] Utiliser l'instruction if dans la notation d'inclusion de liste
[Route vers Python intermédiaire] Utiliser des opérateurs ternaires
[Road to Intermediate Python] Appelez une instance de classe comme une fonction avec __call__
Comment définir dynamiquement des variables en Python
[LLDB] Créez votre propre commande avec Python
Utilisez facilement vos propres fonctions en Python
Créez votre propre classe de structure graphique et son dessin avec python
Comment utiliser __slots__ dans la classe Python
[Route vers Python intermédiaire] Utiliser des expressions lambda
Obtenez votre propre adresse IP en Python
[Route vers Python intermédiaire] Résumé du lien de l'article
[Python] Implémentez votre propre classe de type liste à l'aide de collections.UserList
Importez vos propres modules avec le développement Python de Grasshopper
python: utilisez votre propre classe pour numpy ndarray
classe de cas en python
Notation de classe en Python
La voie de la mise à jour de Splunkbase avec votre propre application Splunk compatible avec Python v2 / v3
Mémo pour créer votre propre Box avec le Python de Pepper
Créez votre propre Big Data en Python pour validation
[Introduction à l'application Udemy Python3 +] 66. Création de votre propre exception
Créez votre propre stéréogramme aléatoire (RDS) en Python.
Utilisez CASA Toolkit dans votre propre environnement Python
Essayez de mettre des LED dans votre propre PC (légèrement)
Convertir / renvoyer des objets de classe au format JSON en Python
Pour vider stdout en Python
Connectez-vous au site Web en Python
Parler avec Python [synthèse vocale]
Comment développer en Python
Publier sur Slack en Python
Comment utiliser la méthode __call__ dans la classe Python
Essayez de trier vos propres objets avec des files d'attente prioritaires en Python
Comment utiliser pyenv et pyenv-virtualenv à votre manière
Comment définir plusieurs variables dans une instruction Python for
[Road to Intermediate Python] Permet des opérations de comparaison pour des classes uniques
[Python] Lorsque vous souhaitez importer et utiliser votre propre package dans le répertoire supérieur
[Python] Comment faire PCA avec Python
[Python] Créez votre propre bot LINE
Convertir Markdown en PDF en Python
Les mines terrestres cachées dans les variables de classe Python
[Route vers Python intermédiaire] Spécifiez dynamiquement la méthode d'exécution par nom de variable
Comment utiliser SQLite en Python
Lire des morceaux PNG en Python (édition de classe)
Dans la commande python, python pointe vers python3.8
Essayez de calculer Trace en Python
Road to Intermediate Linux: Network Edition
Comment utiliser Mysql avec python
Essayez de vous connecter automatiquement à Netflix en utilisant python sur votre PC
Comment envelopper C en Python
Comment utiliser ChemSpider en Python