Python-da __repr__ va __str__ o'rtasidagi farq nima?


javob bering 1:

Qisqacha tushuntirishga harakat qilaman. _str_ va _repr_ satrlarni namoyish qilish uchun ikkalasi ham bir oz farq qiladi. Rep (ob'ektning texnik tafsilotlari) yordamida siz Python ifodasini baholash uchun python үнэлгээ () funktsiyasini chaqirishingiz mumkin. Biroq, bu mumkin emas.

>>> repr (4) == str (4) Haqiqiy >>> repr ('oddiy hain ...') == str ('oddiy hain ...') noto'g'ri

Endi bu xatti-harakatni tushunish uchun odam natijani ko'rishi kerak

>>> s = 'oddiy o'rmon ...' >>> vakili (lar) "" oddiy o'rmon ... "" >>> str (lar) "oddiy o'rmon ..." >>> str (4) ' 4 '>>> Qayta ishlash (4)' 4 '

_Repr_ va _str_ ni tushunish uchun Python Evaluation Funksiyasidan foydalanish

>>> baholash (repr ('oddiy hain ...')) "oddiy daraxtzor ..." >>>> (str ('oddiy hain ...')) qidirish (oxirgi qo'ng'iroq oxirgi): fayl » ", 1-qator, ichida Fayl " ", 1-qator, ichida NameError: 'oddiy hain ...' nomi aniqlanmadi

Ushbu funktsiyadan qayerda foydalanish kerak? Pythonda ob'ekt haqidagi ma'lumotni aniqlash uchun _repr_, va _str_ - bosib chiqarish yoki ko'rish uchun ishlatiladi.

  • Ob'ekt to'g'risida ko'proq texnik ma'lumotlarni taqdim etish uchun har bir amalga oshirilgan sinf uchun __repr__ ni bajarishga harakat qiling. O'qish qulay deb o'ylagan sinflar uchun __str__ dasturini bajarib ko'ring

Men ushbu misolni Internetda topdim

>>> ma'lumotlar vaqtidan boshlab >>> endi = datetime.now () >>> repr (now) "datetime.dattime (2013, 2, 5, 4, 43, 11, 673075)" >>> str (now ) '2013-02-05 04: 43: 11.673075'

Siz buni tushunasiz degan umiddaman.


javob bering 2:

Iloji bo'lsa, __repr__ uchun bu mos qiymatni (mos sharoitda) ob'ektni qayta yaratishda ishlatilishi mumkin bo'lgan Python ifodasi kabi ko'rinishi kerak. Agar buning iloji bo'lmasa, <. Foydali tavsif ...> shaklining satrini qaytarish kerak. "

Xususan, "xyzzy" satri uchun __str__ satr bo'ladi: xyzzy

satr uchun __repr__ esa 'xyzzy' satri bo'lishi kerak.


javob bering 3:

Iloji bo'lsa, __repr__ uchun bu mos qiymatni (mos sharoitda) ob'ektni qayta yaratishda ishlatilishi mumkin bo'lgan Python ifodasi kabi ko'rinishi kerak. Agar buning iloji bo'lmasa, <. Foydali tavsif ...> shaklining satrini qaytarish kerak. "

Xususan, "xyzzy" satri uchun __str__ satr bo'ladi: xyzzy

satr uchun __repr__ esa 'xyzzy' satri bo'lishi kerak.