>>classExample:pass>>>print(str(Example()))>>>"/> >>classExample:pass>>>print(str(Example()))>>>">
Maison >développement back-end >Tutoriel Python >Quelles sont les similitudes et les différences entre __str__ et __repr__ en Python ?
Nous savons tous que la fonction intégrée de Python repr() peut exprimer des objets sous forme de chaînes pour faciliter notre identification. Il s'agit de la "représentation sous forme de chaîne". repr() utilise la méthode spéciale __repr__ pour obtenir la représentation sous forme de chaîne d'un objet. Si __repr__ n'est pas implémenté, lorsque nous imprimons une instance d'un vecteur sur la console, la chaîne résultante peut être
>>> class Example: pass >>> print(str(Example()))>>> print(repr(Example()))>>> >>> str(Example) "" >>> repr(Example()) ''
Ensuite, examinons les similitudes et les différences entre **__str__** et **__repr__**. Selon la documentation officielle de Python :
__str__ : Appelé par str(object) et les fonctions intégrées format() et print() pour générer une représentation sous forme de chaîne "informelle" ou bien formée d'un objet. La valeur de retour doit être un objet chaîne.
__repr__ : est appelé par la fonction intégrée repr() pour afficher la représentation sous forme de chaîne "officielle" d'un objet. La valeur de retour doit être un objet chaîne. Cette méthode est généralement utilisée pour le débogage. L'implémentation par défaut définie pour l'objet de type intégré appelle object.__repr__().
Vous êtes confus entre les formats formels et informels, n'est-ce pas ? C'est bon, voyons voir :
>>> x = 4 >>> repr(x) '4' >>> str(x) '4' >>> y = 'pythonic' >>> repr(y) "'pythonic'" >>> str(y) 'pythonic' >>> z = '4' >>> repr(z) "'4'" >>> str(z)# 注意,此处的输出结果形式跟str(x)一样,但x和z的类型并不一样 '4' >>> str(x) == str(z) True >>> repr(x) == repr(z) False >>> str(4) == str("4") True >>> repr(4) == repr("4") False
Lorsque x=4, lorsque x est un type entier, les résultats de retour de l'appel de str() et repr() sont les mêmes,
Et quand y Lorsqu'il est de type chaîne, le résultat de repr(y) est la représentation sous forme de chaîne "formelle", tandis que le résultat de str(y) est la représentation "informelle". str() nous permet de comprendre le contenu de l'objet le plus rapidement et est plus lisible.
>>> import datetime >>> d = datetime.datetime.now() >>> str(d) '2020-04-04 20:47:46.525245' >>> repr(d) 'datetime.datetime(2020, 4, 4, 20, 47, 46, 525245)' >>>
On peut voir que repr() peut mieux afficher le type, la valeur et d'autres informations de l'objet, et la description de l'objet est claire.
Il est appelé lorsque la fonction str() est utilisée ou lorsqu'un objet est imprimé à l'aide de la fonction d'impression, et la chaîne qu'elle renvoie est plus conviviale pour les utilisateurs finaux.
class Student(): def __init__(self, name): self.name = name def __str__(self): return "Name:" + self.name def __repr__(self): return "姓名:" + self.name class_one = Student("Alice") print(class_one) print(str(class_one)) print(repr(class_one))
Résultat de sortie :
Name:Alice Name:Alice 姓名:Alice
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!