__str__
va __repr__
bular classning metodi bo'lib, biz bularni yozilgan kodlarni so'ngida, qayta tekshirish maqsadida, ya'ni debugging qilishga foydalanamiz.
__repr__
bu maxsus string taqdim etuvchini obyektlarni qaytaradigan metod hisoblanadi.
__str__
esa, maxsus bo'lmagan string qatnashgan obyektlarni qaytaruvchi metod hisoblanadi. __str__
ni taqdim qilish str()
built-in funksiyasini e'lon qilish orqali amalga oshiriladi, __repr__
ni taqdim qilish uchun ham, huddi shunday repr()
funksiyasi orqli amalga oshiriladi.
-
__str__
metod orqali, biz o'qish uchun qulay bo'lgan ma'lumotni qaytarolamiz. -
__repr__
metod ham, huddi__str__
kabi ma'lumot qaytarib, ammo ma'lumotni aynan, faqat kod yozuvchi o'qishga qodir qilib qaytaradi.
>>> import datetime
>>> today = datetime.datetime.now()
>>> str(today)
'2020-04-12 17:47:21.956984'
>>> repr(today)
'datetime.datetime(2020, 4, 12, 17, 47, 21, 956984)'
str
orqali obyekni chaqirganimizda, bizga'2020-04-12 17:47:21.956984'
ko'rinishida ma'lumot qaytaradi.
repr
orqali obyektni chaqirganimizda esa,'datetime.datetime(2020, 4, 12, 17, 47, 21, 956984)'
ko'rinishida ma'lumot qaytdi, bu esa har bir inson uchun bir qarashda tushinib bo'lmaydigan ma'lumot, buni aynan kod yozuvchi mutaxassisning o'zigina tushinishi va undan foydalana olishi uchun, qulay ko'rinishda, qolganlar tushinishu uchun, kerakli tushinchalar va bilimlar talab etiladi.
main.py
class PointME1():
def __init__ (self, ten, twenty):
self.ten = ten
self.twenty = twenty
def __str__ (self):
return '{},{}'.format (self.ten, self.twenty)
def __repr__(self):
return 'Point2D, ten={},twenty+{}'.format(self.ten, self.twenty)
>>> from main import PointME1
>>> test = PointME1
>>> str(test)
>>> '120, 520'
str
misolida ko'rib turganingizdek, bizga qaytgan javob, faqat biz obyektga bergan qiymatning o'z ko'rinishida qaytdi.
>>> from main import PointME1
>>> test = PointME1
>>> repr(test)
>>> 'PointME1, ten=120, twenty+520'
repr
misolida esa, obyektning nomi va biz obyektga bergan qiymat birga qaytdi. Bu holatda, yuqorida takidlanganidek, siz ma'lumotdan shu maqsadlarda foydalana olishingiz mumkin, agar siz dasturchi yoki kod yozishdan xabardor bo'lsangiz.
__repr__
metodi orqali qaytgan ma'lumotlardan argument sifatida foydalanib, ularni obyekt sifati qayta e'lon qilishingiz mumkin bo'ladi.__str__
dan qaytgan ma'lumot esa, asosan o'qish uchun qulay ko'rinishda e'lon qilinib,__repr__
dan farqli o'laroq str() dan qaytgan ma'lumotdan siz argument sifatida foydalanish imkoniyatiga ega bo'lmaysiz.
debugging - (debug)inglizchada xatoni o'chirish degan ma'noni anglatib, debagging esa, aynan kod yozib bo'lingandan so'ng, kodning xatosi bor yoki yo'qligini, va to'g'ri ishlayotganini tekshirish maqsadida foydalaniladi.
E'tiboringiz uchun rahmat!
β
UzPythonLogs
π Dilmurod Mamatmurodov