Quelles sont les similitudes et les différences entre
Nous savons tous que la fonction intégrée repr() de Python 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() obtient la représentation sous forme de chaîne d'un objet via la méthode spéciale __repr__. 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())) <__main__.Example object at 0x10a514f98> >>> print(repr(Example())) <__main__.Example object at 0x1088eb438> >>> >>> str(Example) "<class '__main__.Example'>" >>> repr(Example()) '<__main__.Example object at 0x1088eb438>'
Ensuite, examinons les similitudes et les différences entre **__str__** et **__repr__**. Selon la définition officielle de la documentation Python :
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 lorsque y est un type chaîne, le résultat de repr(y) est une représentation sous forme de chaîne "formelle", tandis que le résultat de str(y) est "informel". 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
Points communs : Ils sont tous utilisés pour générer un objet
Différence : Le but de
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!