Skip to content

Instantly share code, notes, and snippets.

@DMamatmurodov
Last active June 13, 2023 12:22
Show Gist options
  • Save DMamatmurodov/71dae2f2c5290ea3e6a93225829dbb0c to your computer and use it in GitHub Desktop.
Save DMamatmurodov/71dae2f2c5290ea3e6a93225829dbb0c to your computer and use it in GitHub Desktop.

Python'da __str__ va __repr__ metodlari!

Ularni maqsadi va ishlatilishi:

__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.

Misol tariqasida:
>>> 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)'
Birinchi misol:

str orqali obyekni chaqirganimizda, bizga '2020-04-12 17:47:21.956984' ko'rinishida ma'lumot qaytaradi.

Ikkinchi misol:

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.

Quyida class orqali misol.

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.

Umumiy tarif:

__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.

*Kalit_so'zlar

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.

Matnni to'ldirish uchun, taklif va murojaatlar bo'lsa, bemalol, biz tayyormiz! βœ‹ πŸ˜‰

E'tiboringiz uchun rahmat!

βœ… UzPythonLogs
πŸ“ Dilmurod Mamatmurodov

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment