Table des matières
__str__ La fonction
_repr_ La fonction
Fonction __iter__
Fonction __getitem__
Maison développement back-end Tutoriel Python notes d'étude python - méthode magique pour rendre les classes personnalisées davantage semblables à des types intégrés

notes d'étude python - méthode magique pour rendre les classes personnalisées davantage semblables à des types intégrés

Feb 18, 2017 am 10:46 AM
python

Les méthodes magiques de Python sont ces fonctions prédéfinies de type __XXX__ en Python.
Le plus grand avantage de l’utilisation des méthodes magiques de Python est que Python fournit des méthodes simples pour que les objets se comportent comme des types intégrés. Fonction

__str__ La fonction

__str__ est utilisée pour traiter le contenu de sortie lors de l'impression de l'instance elle-même. Si cette fonction n'est pas remplacée, un nom d'objet et une adresse mémoire sont affichés par défaut.
Par exemple :

>>> class Student(object):
...     def __init__(self,name):
...             self._name = name
...
>>> print Student()
Copier après la connexion

Sortie : <__main__.Student object at 0x0000000002A929E8>.
Alors, comment rendre les résultats de sortie plus lisibles ? Nous pouvons remplacer la fonction __str__. Par exemple, le résultat de sortie de

>>> class Student(object):
...     def __init__(self, name):
...             self._name = name
...     def __str__(self):
...             return  "I'm a student, named %s" % self._name
...
>>> print Student("Charlie")
Copier après la connexion

est : I'm a student, named Charlie.
Lorsque nous appliquons la fonction str() à l'objet, nous appelons en fait la fonction __str__ de l'objet.

_repr_ La fonction

__repr__ sérialise également les objets, mais __repr__ est davantage visible par le compilateur Python. __str__C’est plus une question de lisibilité.
Lorsque nous appliquons la fonction repr() à un objet, ce que nous appelons est en fait la fonction __repr__ de cette fonction.

associé à repr() est la fonction eval(). eval()La fonction est de reconvertir l'objet sérialisé en objet. Le principe est que l'objet implémente la fonction __repr__.

Le paragraphe ci-dessus est basé sur ma propre compréhension, je ne sais pas s'il est vrai ou faux.

>>> item = [1,2,3]
>>> repr(item)
'[1, 2, 3]'
>>> other_item = eval(repr(item))
>>> other_item[1]
2
Copier après la connexion

Fonction __iter__

Nous utilisons souvent for...in... pour parcourir des listes ou des tuples. C'est la liste qui hérite d'Iterable. Iterable implémente la fonction __iter__.

Pour transformer un objet personnalisé en objet itérable, vous devez implémenter deux méthodes : __iter__ et next.

__iter__La fonction renvoie un objet. Lors de l'itération, la fonction next sera appelée en continu pour obtenir la valeur suivante jusqu'à ce que StopIteration soit capturée et arrêtée.
Le tutoriel du professeur Liao Xuefeng écrit la méthode __next__, je ne sais pas pourquoi.

class Fib(object):
    def __init__(self):
        self.a, self.b = 0, 1

    def __iter__(self):
        return self

    def next(self):
        self.a, self.b = self.b, self.a + self.b
        if self.a > 10000:
            raise StopIteration
        return self.a


for i in Fib():
    print i
Copier après la connexion

Fonction __getitem__

Ce qui précède implémente l'itération des objets en implémentant la fonction __iter__.
Alors comment implémenter un objet pour extraire des éléments par indice.
Cela se fait en implémentant les méthodes __getitem__ de l'objet.
Donnons-en un

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'interprète Python peut-il être supprimé dans le système Linux? L'interprète Python peut-il être supprimé dans le système Linux? Apr 02, 2025 am 07:00 AM

En ce qui concerne le problème de la suppression de l'interpréteur Python qui est livré avec des systèmes Linux, de nombreuses distributions Linux préinstalleront l'interpréteur Python lors de l'installation, et il n'utilise pas le gestionnaire de packages ...

Comment résoudre le problème de la détection de type pylance des décorateurs personnalisés dans Python? Comment résoudre le problème de la détection de type pylance des décorateurs personnalisés dans Python? Apr 02, 2025 am 06:42 AM

Solution de problème de détection de type pylance Lorsque vous utilisez un décorateur personnalisé dans la programmation Python, le décorateur est un outil puissant qui peut être utilisé pour ajouter des lignes ...

Comment éviter les problèmes de barre de progression en double causés par l'impression dans TQDM dans Python? Comment éviter les problèmes de barre de progression en double causés par l'impression dans TQDM dans Python? Apr 01, 2025 pm 11:48 PM

Évitez les problèmes de barre de progression en double causés par l'impression dans TQDM dans Python lorsque vous utilisez la bibliothèque TQDM de Python, si vous utilisez l'impression à l'intérieur d'une boucle ...

Comment envoyer la demande de post HTTP / 2 à l'aide de la bibliothèque HTTPX de Python? Comment envoyer la demande de post HTTP / 2 à l'aide de la bibliothèque HTTPX de Python? Apr 01, 2025 pm 11:54 PM

Envoyer HTTP / 2 à l'aide de la bibliothèque HTTPX de Python ...

FastAPI et AIOHTTP partagent-ils la même boucle d'événements mondiaux? FastAPI et AIOHTTP partagent-ils la même boucle d'événements mondiaux? Apr 02, 2025 am 06:12 AM

Problèmes de compatibilité entre les bibliothèques asynchrones Python dans Python, la programmation asynchrone est devenue le processus de concurrence élevée et d'E / S ...

Python 3.6 Chargement du fichier de cornichon MODULENOTFOUNDERROR: Que dois-je faire si je charge le fichier de cornichon '__builtin__'? Python 3.6 Chargement du fichier de cornichon MODULENOTFOUNDERROR: Que dois-je faire si je charge le fichier de cornichon '__builtin__'? Apr 02, 2025 am 06:27 AM

Chargement du fichier de cornichon dans Python 3.6 Erreur d'environnement: modulenotFounonError: NomoduLenamed ...

See all articles