В Python каква е разликата между __repr__ и __str__?


Отговор 1:

Накратко ще се опитам да обясня. _str_ и _repr_ са и двете за представяне на низове с малка разлика. С repr (технически подробности за обекта) можете да извикате функцията python eval (), за да оцените израза на python, но не можете.

>>> repr (4) == str (4)
Вярно
>>> repr ('simple hain ...') == str ('simple hain ...')
фалшив

Сега направете индивида да види изхода, за да разбере това поведение

>>> s = 'simple hain ...'
>>> repr (s)
"'прост хаин ...'"
>>> str (s)
'просто хайн ...'
>>> str (4)
"4"
>>> repr (4)
"4"

Използване на функцията python eval за разбиране на _repr_ и _str_

>>> eval (repr ('simple hain ...'))
'просто хайн ...'
>>> eval (str ('simple hain ...'))
Traceback (последно последно обаждане):
  Файл "", ред 1, в 
  Файл "", ред 1, в 
NameError: име 'simple hain ...' не е дефинирано

Сега къде да използвате тази функция. В Python _repr_ се използва за даване на информация за обекта, а _str_ се използва за печат или показване на цел.

  • Опитайте се да внедрите __repr__ за всеки клас, който реализирате, за да дадете повече технически подробности за object.Terry to Implement __str__ за класове, които смятате, че четенето е по-важно

Намерих този пример в нета

>>> от дата за импортиране от дата
>>> сега = datetime.now ()
>>> repr (сега)
„datetime.datetime (2013, 2, 5, 4, 43, 11, 673075)“
>>> str (сега)
„2013-02-05 04: 43: 11.673075“

Надявам се да разберете това.


Отговор 2:

За __repr__, „Ако това е възможно, това трябва да изглежда като валиден израз на Python, който би могъл да бъде използван за пресъздаване на обект със същата стойност (при условие на подходяща среда). Ако това не е възможно, низ от формата <.. . малко полезно описание ...> трябва да се върне. "

И така, конкретно, __str__ за низ "xyzzy" ще бъде низът: xyzzy

като има предвид, че __repr__ за низ ще бъде низът: „xyzzy“


Отговор 3:

За __repr__, „Ако това е възможно, това трябва да изглежда като валиден израз на Python, който би могъл да бъде използван за пресъздаване на обект със същата стойност (при условие на подходяща среда). Ако това не е възможно, низ от формата <.. . малко полезно описание ...> трябва да се върне. "

И така, конкретно, __str__ за низ "xyzzy" ще бъде низът: xyzzy

като има предвид, че __repr__ за низ ще бъде низът: „xyzzy“