Hver er munurinn á __repr__ og __str__ í Python?


svara 1:

Ég mun reyna að útskýra á ágætan hátt. _str_ og _repr_ eru báðir með smá mismun fyrir framsetning strengja. Með repr (hlutlægum tæknilegum upplýsingum) er hægt að hringja í Python eval () aðgerðina til að meta Python tjáninguna. Þetta er þó ekki mögulegt.

>>> repr (4) == str (4) True >>> repr ('simple hain ...') == str ('simple hain ...') Falskur

Nú þarf viðkomandi að sjá framleiðsluna til að skilja þessa hegðun

>>> s = 'einföld lund ...' >>> fulltrúi (r) "'einföld lund ...'" >>> str (s) "einföld lund ..." >>> str (4) ' 4 '>>> Repr (4)' 4 '

Notkun Python-matsaðgerðarinnar til að skilja _repr_ og _str_

>>> eval (repr ('einfalt hain ...')) "einfalt lund ..." >>> eval (str ('einfalt hain ...')) rekja (síðasta símtal síðast): skrá " ", Lína 1, inn Skrá " ", Lína 1, inn NameError: Nafnið 'simple hain ...' er ekki skilgreint

Hvar ætti að nota þessa aðgerð? Í Python er _repr_ notað til að tilgreina upplýsingar um hlutinn og _str_ er notað til prentunar eða skoðunar.

  • Prófaðu að útfæra __repr__ fyrir hvern útfærðan flokk til að veita meiri tæknilegar upplýsingar um hlut. Prófaðu að útfæra __str__ fyrir námskeið sem þér finnst læsilegra

Ég fann þetta dæmi á netinu

>>> innflutningur frá datetime datetime >>> núna = datetime.now () >>> repr (nú) "datetime.datetime (2013, 2, 5, 4, 43, 11, 673075)" >>> str (núna ) '2013-02-05 04: 43: 11.673075'

Ég vona að þú skiljir það.


svara 2:

Fyrir __repr__, ef mögulegt er, ætti þetta að líta út eins og gild Python tjáning sem hægt er að nota til að endurskapa hlut með sama gildi (í viðeigandi umhverfi). Ef þetta er ekki mögulegt ætti að skila streng af forminu <.. Gagnleg lýsing ...>. "

Sérstaklega, __str__ fyrir strenginn "xyzzy" væri strengurinn: xyzzy

meðan __repr__ fyrir streng væri strengurinn: 'xyzzy'


svara 3:

Fyrir __repr__, ef mögulegt er, ætti þetta að líta út eins og gild Python tjáning sem hægt er að nota til að endurskapa hlut með sama gildi (í viðeigandi umhverfi). Ef þetta er ekki mögulegt ætti að skila streng af forminu <.. Gagnleg lýsing ...>. "

Sérstaklega, __str__ fyrir strenginn "xyzzy" væri strengurinn: xyzzy

meðan __repr__ fyrir streng væri strengurinn: 'xyzzy'