Kuo „Python“ skiriasi nuo __repr__ ir __str__?


Atsakymas 1:

Trumpai pabandysiu paaiškinti. Tiek _str_, tiek _repr_ yra skirti atvaizduoti eilutes su nedideliu skirtumu. Naudodami repr (techninę objekto informaciją) galite paskambinti į Python eval () funkciją, kad įvertintumėte Python išraišką, bet to negalite padaryti.

>>> repr (4) == str (4)
Tiesa
>>> repr ('paprastas hain ...') == str ('paprastas hain ...')
Melagingas

Dabar padarykite, kad asmuo pamatytų išėjimą, kad suprastų tokį elgesį

>>> s = 'paprastas hain ...'
>>> repr (s)
"" paprastas hain ... ""
>>> str (s)
'paprastas hain ...'
>>> str (4)
'4'
>>> repr (4)
'4'

Python eval funkcijos naudojimas norint suprasti _repr_ ir _str_

>>> eval (repr ('paprastas hainas ...'))
'paprastas hain ...'
>>> eval (str ('paprastas hain ...'))
Traceback (paskutinis skambutis paskutinis):
  Failas „“, 1 eilutė, esančiame 
  Failas „“, 1 eilutė, esančiame 
„NameError“: vardas „paprastas hain ...“ nėra apibrėžtas

Dabar kur naudoti šią funkciją. „Python“ sistemoje _repr_ yra naudojamas informacijai apie objektą pateikti, o _str_ yra naudojamas spausdinimo ar rodymo tikslams.

  • Pabandykite įdiegti __repr__ kiekvienoje jūsų įgyvendinamoje klasėje, kad pateiktumėte daugiau techninės informacijos apie objektą. Pabandykite įdiegti __str__ klasėms, kurios, jūsų manymu, yra skaitomiau

Šį pavyzdį radau tinkle

>>> iš datetime import datetime
>>> dabar = datetime.now ()
>>> repr (dabar)
„datetime.datetime (2013 m., 2, 5, 4, 43, 11, 673075)“
>>> str (dabar)
'2013-02-05 04: 43: 11.673075'

Tikiuosi, kad jūs tai supratote.


Atsakymas 2:

Jei tai įmanoma, tai turėtų atrodyti kaip tinkama Python išraiška, kuri galėtų būti naudojama atkurti objektą su ta pačia verte (suteikiant tinkamą aplinką). Jei tai neįmanoma, formos eilutė <.. .įdomus naudingas aprašymas ...> turėtų būti grąžintas “.

Taigi konkrečiai __str__ eilutei „xyzzy“ būtų eilutė: xyzzy

kadangi eilutės __repr__ bus eilutė: 'xyzzy'


Atsakymas 3:

Jei tai įmanoma, tai turėtų atrodyti kaip tinkama Python išraiška, kuri galėtų būti naudojama atkurti objektą su ta pačia verte (suteikiant tinkamą aplinką). Jei tai neįmanoma, formos eilutė <.. .įdomus naudingas aprašymas ...> turėtų būti grąžintas “.

Taigi konkrečiai __str__ eilutei „xyzzy“ būtų eilutė: xyzzy

kadangi eilutės __repr__ bus eilutė: 'xyzzy'