1. Exemple d'impression
Commençons par l'impression la plus simple dans la classe et l'objet , imprimer une instance est une application très peu claire, mais en fait, il est très important dans la programmation . La raison est également très simple, car nous voudrons souvent voir le contenu d'une certaine classe ne correspond pas à nos attentes. Mais lorsque nous imprimons directement, nous ne recevrons qu'une adresse.
Prenez l'exemple:
Dans ce code, nous avons identifié une classe simple, avec deux éléments X et Y, mais si nous exécutons directement, vous exporterez de tels résultats:
class point: def __init__(self, x, y): self.x = x self.y = yif __name__ == "__main__": p = point(3, 4) print(p)
Voici quelques-unes des informations pertinentes de cet exemple lorsque l'interprète est exécuté, mais pour nous, il n'ya presque aucune référence maintenant, nous voulons être une valeur spécifique dans cet exemple, pas l'adresse en mémoire. Nous voulons faire cette fonctionnalité, nous avons beaucoup de façons, voyons.
<__main__.point object at 0x10a18c210>
Lundi, __ CR__ modal
__ Méthode CR__ Les gens doivent être étranges, il est similaire à la méthode TString en Java, qui peut être convertie en une chaîne en fonction de nos besoins pour renvoyer les résultats des résultats.
Par exemple, nous pouvons surcharger cette méthode de classe, vous pouvez exporter des résultats en fonction de nos besoins:
Lorsque nous l'exécutons, le résultat sera le suivant: ]
class point: def __init__(self, x, y): self.x = x self.y = y def __str__(self): return 'x: %s, y: %s' % (self.x, self.y)
__ STR__ et __INIT__, __LEN__ De nombreuses fonctions sont
Fonctions spécialesx: 3, y: 4
en Python, lorsque nous créons des cours, les systèmes créeront complètement des fonctions spéciales. Nous pouvons recharger certaines des fonctionnalités que nous voulons en cas de besoin. Par exemple, si nous écrivions une classe d'arbres binaires, nous pouvons également recourir tous les boutons de la fonction __STR__, imprimer complètement. MARDI, MÉTHODE __R__ Vous avez peut-être entendu la fonction __RPR__, peut également déployer notre fonction personnalisée basée sur la sortie. Par exemple, nous changeons le codeSur ou vous pouvez obtenir le même résultat.
Nous pouvons l'exécuter, vous pouvez également obtenir:
Pourquoi, __RPR__ et __STR__ est-ce la même chose? Si tel est le même, pourquoi Python veut conserver deux fonctions identiques
class point: def __init__(self, x, y): self.x = x self.y = y def __repr__(self): return 'x: %s, y: %s' % (self.x, self.y)
Pourquoi ne relâchez-vous pas une? Dans Avant d'analyser la raison, faites une expérience d'essai, si nous surchargons la Deux fonctions, lorsque nous l'exportons, quelle est la mise en œuvre du programme? Pour distinguer, nous avons modifié le format de sortie dans la REP.
x: 3, y: 4
Après la course, les résultats de la sortie sont également:
Ne vous inquiétez pas des conclusions, copiez ce code dans
Notebook Jupyter
, nous faisons Ne pas passer la sortie imprimée et nous envisagerons des résultats interactifs grâce à l'interaction des cadres interactifs fournis avec Jupyter. Nous considérerons:class point: def __init__(self, x, y): self.x = x self.y = y def __str__(self): return 'x: %s, y: %s' % (self.x, self.y) def __repr__(self): return '<point x: %s, y: %s>' % (self.x, self.y)
Comment devenir le résultat de __repr__? En fait, c'est exactement la différence entreDeux
x: 3, y: 4
, s'il s'agit d'une courte période, les deux fonctions sont converties en une chaîne. Cependant, la différence est que les scripts d'utilisation des deux sont différents, avec __str__ focus plus sur. Ainsi, lorsque nous convertissons les utilisateurs ou utilisons des fonctions STR pour convertir Premier Python appellera la fonction __STR__ par défaut. __RPR__ Ajoutez de l'accent sur ce rapport d'instance, en plus du contenu de l'affaire, nous attachons souvent ses informations relatives à la classe car ce contenu est destiné aux développeurs . Ainsi, lorsque nous l'exportons dans une fenêtre interactive, il sera priorisé __RPR__. Ces deux fonctions si nous ne faisons qu'un seul, Python est en cours d'appel, il sera déployé. Mais les scripts d'application à deux personnes sont différents, mais Python est ajusté pour nous faciliter. En théorie, pour la fonctionnalité __RPR__ qualifiée pour pouvoir effectuer:
Bien que nous puissions restaurer cette version après KBonjour, le contenu de la sortie __RPR__ est exécuté, bien sûr, il est difficile de faire dans certaines scènes. Nous allons donc la mentionner, en veillant à ce que les couches et les objets générés dans __RPR__ ont plus d'informations plus privées, pratiques pour les développeurs à déboguer et à utiliser . En outre, l'ARV est l'acronyme du rapport. Il a donc un rapport que le rapport réside dans et STR n'est converti que dans une chaîne. Les deux sont toujours différents. Format
La fonction de sortie la plus populaire de Python sauf le format ci-dessus et un formatL'utilisation relative représente simplement la variable de {}, puis entrez la séquence:
eval(repr(obj)) == obj
De plus, nous pouvons ajouter
écrire le nom de la variableentre parenthèses dans le maréhabit, Ajoutez la capacité de lecture:
La fonction de format est beaucoup plus que celle et prend également en charge plusieurs paramètres, similaires aux copies imprimées dans la langue C, peut être utilisée pour créer plusieurs sorties via.Différents paramètres. Par exemple, contrôler le nombre de bits est réservé derrière la décimale ou se transformer en pourcentage, le nombre scientifique de nombres scientifiques et droits et à droite. Personne n'est ici, vous pouvez interroger quand vous l'utilisez.
Bien sûr, nous pouvons utiliser la logique dans __RPR__ et __STR__, mais cela ne reflète pas son pouvoir. Parce que dans Python, il fournit également une fonction spéciale de __format___, en réécriture __Format__ et en utilisant le format, nous pouvons effectuer une fonction plus de bovins. Format combiné __Format __
Nous pouvons surcharger la fonction __Format__ en classe, de sorte que nous puissions appeler directement à l'objet par le biais du format et de la fonction de la fonction de la fonction de fonctionnement de la demande.
Voir Code:
Nous avons changé __RPR__ de __Format__, mais nous avons besoin de faire attention à un détail, nous ajoutons le code de paramètre
, car les fonctions de support de format de la logique traitement selon les paramètres, donc cNous devons ajouter un paramètre à l'interface. Après avoir ajouté, nous pouvons appeler directement le format (P).Ce n'est pas fini ici. Dans certaines scènes, nous pouvons avoir de nombreux formats de sortie pour
. Par exemple: Dans certaines scènes, nous voudrons peut-être exporter (x, y), parfois nous espérons exporter x: 3, y: 4, il peut y avoir des scènes, nous voulons exporter et lt; X, y & gt;
Nous sommes très gênants à propos d'une telle scène. À ce stade, vous pouvez simplifier ce processus, voir le code:
Nous pouvons être contrôlés par les paramètres lorsque vous appelez nous savons quel format est utilisé pour formater des objets:
class point: def __init__(self, x, y): self.x = x self.y = y def __str__(self): return 'x: %s, y: %s' % (self.x, self.y) def __format__(self, code): return 'x: {x}, y: {y}'.format(x = self.x, y = self.y)
C'est-à-dire en surcharge __format__we
Fabriqué la logique du format de format fixe original . Cela augmente considérablement la flexibilité de notre processus, peut simplifier et informer notre code dans certains problèmes de problèmes.Pour Python, cette langue, je pense personnellement que ce n'est qu'une petite partie, et le code est simple et beau, c'est une grande tête. C'est la raison pour laquelle beaucoup de gens disent que Python très facile à apprendre ]