Dunder metodlardan biz __init__metodi bilan tanishdik. Bu metod klassdan ob'ektda chaqiriladi va ob'ektning xizmat ko'rsatish. Ush darsimizda esa maxsus metodlarning ba'zilari bilan tanishamiz. yuqoridagi klassdan yangi obyekt yaratamiz va obyekt haqida ma'lumot olish uchun print()funksiyasini chaqiramiz:
yuqoridagi klassdan yangi obyekt yaratamiz va obyekt haqida ma'lumot olish uchun print()funksiyasini chaqiramiz:
avto1 = Avto ( "GM" , "Malibu" , "Qora" , 2020 , 40000 )
print ( avto1 ) # obyekt haqida ma'lumot
Natija:<__main__.Avto object at 0x00000238A6DAE0C8>
Qandaydir tushunarsiz ma'lumot. Ekrandagi natijadan faqat avto1obyektimiz Avtoklassiga tegishli ekanligini ko'ramiz. Qanday qilib o'rniga ob'ekt haqida tushunarliroq ma'lumot olishimiz mumkin?
Gap bo'lgan biz har gal obyketga print()(yoki str()yoki yoki repr()) orqali murojat qilganimizda, Python obyket ichida __str__yoki __repr__metodlariga murojat qiladi. Agar biz bu metodlarni yozmagan bo'lsak, yuqoridagi kabi umumiy ma'lumot qayataradi.
Biz ushbu metodlarni yangidan yozib, biz kerakli ma'lumotni qayataradian qilishimiz mumkin. yuqoridagi ikki metoddan biriga etarli. tez, __repr__umumiyorq, __str__asosiyroq ma'lumot olish uchun.
Ikkalasidan birini tanlaganda, __repr__metodiga yon bosiladi, sababi bu metod print(), str()va repr()funksiyalarining hammasi bilan ishlaydi. Keling biz ham yuoqirdagi klassimizga __repr__metodini qo'shamiz:
Avto sinfi :
Avto sinfi :
__num_avto = 0
"""Avtomobil klassi"""
def __init__ ( o'z , make , model , rang , yil , narh ):
"""Avtomobilning xususiyatlari"""
o'zini . yasamoq = yasamoq
o'zini . model = model
o'zini . jiringladi = jiringladi
o'zini . yil = yil
o'zini . narh = narh
Avto . __num_avto += 1
def __repr__ ( o'z ):
"""Obyekt haqida ma'lumot"""
return f"Avto: { self . rang } { self . make } { self . model } "
Qaytadan print()funksiyasini chaqiramiz:
avto1 = Avto ( "GM" , "Malibu" , "Qora" , 2020 , 40000 )
chop etish ( avto1 )
Natija:Avto: Qora GM Malibu
Do'stlaringiz bilan baham: |