Wat is in Python het verschil tussen __repr__ en __str__?


Antwoord 1:

Op een beknopte manier zal ik proberen het uit te leggen. _str_ en _repr_ zijn beide voor stringvoorstelling met een klein verschil. Met repr (technische details object) kunt u de functie python eval () aanroepen om de uitdrukking python te evalueren, maar dat kan niet.

>>> repr (4) == str (4)
waar
>>> repr ('simple hain ...') == str ('simple hain ...')
vals

Doe nu het individu om de output te zien om dit gedrag te begrijpen

>>> s = 'simpele hain ...'
>>> reproductie (s)
"'eenvoudige hain ...'"
>>> str (s)
'eenvoudig hain ...'
>>> str (4)
'4'
>>> repr (4)
'4'

De python eval-functie gebruiken om de _repr_ en _str_ te begrijpen

>>> eval (repr ('simple hain ...'))
'eenvoudig hain ...'
>>> eval (str ('simple hain ...'))
Hertraceren (meest recente oproep als laatste)
  Bestand "", regel 1, in 
  Bestand "", regel 1, in 
NameError: naam 'simple hain ...' is niet gedefinieerd

Nu waar deze functie te gebruiken. In Python wordt _repr_ gebruikt om de objectinformatie te geven en _str_ wordt gebruikt om af te drukken of weer te geven.

  • Probeer __repr__ te implementeren voor elke klasse die u implementeert om meer technische details over object te geven. Probeer __str__ te implementeren voor klassen waarvan u denkt dat leesbaarheid belangrijker is

Ik vond dit voorbeeld op internet

>>> vanaf datetime importeer datetime
>>> nu = datetime.now ()
>>> repr (nu)
'datetime.datetime (2013, 2, 5, 4, 43, 11, 673075)'
>>> str (nu)
'05-05-2013 04: 43: 11.673075'

Ik hoop dat je dit begrijpt.


Antwoord 2:

Voor __repr__, "Als dit al mogelijk is, zou dit eruit moeten zien als een geldige Python-expressie die zou kunnen worden gebruikt om een ​​object met dezelfde waarde (gegeven een geschikte omgeving) te recreëren. Als dit niet mogelijk is, wordt een string van de vorm <.. . enkele nuttige beschrijving ...> moet worden geretourneerd. "

Dus concreet zou __str__ voor een string "xyzzy" de string zijn: xyzzy

terwijl __repr__ voor een string de string zou zijn: 'xyzzy'


Antwoord 3:

Voor __repr__, "Als dit al mogelijk is, zou dit eruit moeten zien als een geldige Python-expressie die zou kunnen worden gebruikt om een ​​object met dezelfde waarde (gegeven een geschikte omgeving) te recreëren. Als dit niet mogelijk is, wordt een string van de vorm <.. . enkele nuttige beschrijving ...> moet worden geretourneerd. "

Dus concreet zou __str__ voor een string "xyzzy" de string zijn: xyzzy

terwijl __repr__ voor een string de string zou zijn: 'xyzzy'