Python-да __repr__ мен __str__ арасындағы айырмашылық неде?


жауап 1:

Мен қысқаша түсіндіруге тырысамын. _str_ және _repr_ жолдарының көрінісі үшін сәл айырмашылық бар. Rep (объектінің техникалық мәліметтері) көмегімен Python өрнегін бағалау үшін python бағалау () функциясын шақыруға болады. Алайда, бұл мүмкін емес.

>>> repr (4) == str (4) Шын >>> repr ('қарапайым hain ...') == str ('қарапайым hain ...') жалған

Енді адам бұл әрекетті түсіну үшін нәтижені көруі керек

>>> s = 'қарапайым тоғай ...' >>> өкіл (-лер) «'қарапайым тоғай ...'» >>> str (s) «қарапайым тоғай ...» >>> str (4) ' 4 '>>> Тариф (4)' 4 '

_Ft_ және _str_ түсіну үшін Python Evaluation функциясын пайдалану

>>> бағалау (repr ('қарапайым hain ...')) «қарапайым тоғай ...» >>> бағалау (str ('қарапайым hain ...')) бақылау (соңғы қоңырау соңғы): файл » », 1-жол, в Файл « », 1-жол, в NameError: 'қарапайым өмір ...' атауы анықталмады

Бұл функцияны қайда қолдану керек? Python-да _repr_ объект туралы ақпаратты көрсету үшін қолданылады, ал _str_ басып шығару немесе қарау үшін қолданылады.

  • Нысан туралы көбірек техникалық мәлімет беру үшін әрбір іске асырылған сынып үшін __repr__ қолданып көріңіз. Сіз оқылатын деп ойлайтын сыныптар үшін __str__ қолданып көріңіз

Мен бұл мысалды Интернеттен таптым

>>> деректерді уақыттық датадан импорттау >>> қазір = datetime.now () >>> repr (қазір) «datetime.datetime (2013, 2, 5, 4, 43, 11, 673075)» >>> str (now ) '2013-02-05 04: 43: 11.673075'

Сіз мұны түсінесіз деп үміттенемін.


жауап 2:

Мүмкін болса, __repr__ үшін бұл бірдей мәнді (қолайлы ортада) нысанды қайта құру үшін қолданылатын жарамды Python өрнегі сияқты көрінуі керек. Егер бұл мүмкін болмаса, <.. Пайдалы сипаттама ...> пішінінің жолын қайтару керек. «

Атап айтқанда, «xyzzy» жолы үшін __str__: xyzzy жолы болады

жол үшін __repr__ жол болады: 'xyzzy'


жауап 3:

Мүмкін болса, __repr__ үшін бұл бірдей мәнді (қолайлы ортада) нысанды қайта құру үшін қолданылатын жарамды Python өрнегі сияқты көрінуі керек. Егер бұл мүмкін болмаса, <.. Пайдалы сипаттама ...> пішінінің жолын қайтару керек. «

Атап айтқанда, «xyzzy» жолы үшін __str__: xyzzy жолы болады

жол үшін __repr__ жол болады: 'xyzzy'