Making The Class Nicer
Siz o'z `class`ingizning bir instance'ini chop etganingizda qanday ko'rinishda bo'lganini eslaysizmi?
Klassni Yaxshilash
Siz o'z class
ingizning bir instance'ini chop etganingizda qanday ko'rinishda bo'lganini eslaysizmi? Agar eslamasangiz, natija quyidagicha ko'rinadi:
Bu sizga instance qaysi class
ga tegishli ekanligini va oxiridagi o'n oltilik qiymat ob'ektning xotira manzilini ko'rsatadi. Biroq, bu juda foydali emas. Ballning turini va ehtimol rangini chop etish yaxshi bo'lar edi.
Keling, chop etishni yanada foydaliroq qilish uchun "magic method"ni yangilaymiz. ball.py
faylidagi kodni nusxalab, yangi faylga ball_printable.py
deb nomlang va uni quyidagicha tahrirlang:
Bu yerda siz yangi __repr__()
magic methodini qo'shdingiz, bu esa ob'ekt chop etilganda chiroyli string ko'rinishini yaratish uchun ishlatiladi. Ob'ektning instance'ini chop etmoqchi bo'lganingizda, Python sizda __repr__()
yoki __str__()
aniqlanganini tekshiradi. Ko'pincha, __repr__()
ni dasturchilar uchun xatolarni tuzatish vositasi sifatida ishlatish tavsiya etiladi.
Ushbu kodni ishga tushirsangiz, quyidagi natijani olasiz:
Agar siz __str__()
ni ham qo'shsangiz, u chop etilganida __repr__()
ni haqiqatan ham almashtiradi. Mana bir misol:
Ushbu kodda siz __str__()
metodini qo'shdingiz va u __repr__()
ga juda o'xshash stringni qaytaradi, faqat u stringga class
nomini qo'shmaydi. Keyin farqni ko'rsatish uchun, siz ball ob'ektlarini chop etdiniz. Nihoyat, siz __repr__()
va __str__()
ni to'g'ridan-to'g'ri chaqirganingiz natijasini chop etdiniz. Natijangiz quyidagi ko'rinishda bo'ladi:
Bu Pythonning magic metodlari bilan qilishingiz mumkin bo'lgan ishlarning faqat bir qismi.