Print("Assalom alaykum")



Download 10,21 Mb.
bet39/58
Sana28.06.2022
Hajmi10,21 Mb.
#713027
1   ...   35   36   37   38   39   40   41   42   ...   58
Bog'liq
Mohirdev.uz...

# Avto obyektlarini yaratamiz
avto1 = Avto("GM","Malibu","Qora",2020,40000)
avto2 = Avto("GM","Lacetti","Oq",2020,20000)
avto3 = Avto("Toyota",'Carolla',"Silver",2018, 45000)


# Yuqoridagi obyektlarni salon1 ga qo'shamiz
for avto in [avto1, avto2, avto3]:
salon1.add_avto(avto)
Mana navbat __len__ metodiga. Biz bu metod yordamida len() funksiyasi salonimizdagi avtomobillar sonini qaytaradigan qilamiz. Buning uchun yuqoridagi AvtoSalon klassiga __len__ funksiyani ham qo'shamiz va uni obyekt ichidagi avtolar ro'yxatyining uzunligini qaytaradigan qilamiz:
In [30]:
class AvtoSalon:
"""Avtosalon klassi"""
def __init__(self,name):
self.name = name
self.avtolar = []


def __repr__(self):
return f"{self.name} avtosaloni"

def add_avto(self,avto):
if isinstance(avto,Avto): # agar avto Avto klassidan bo'lsa
self.avtolar.append(avto)
else:
print("Avto obyketini kiriting")

def __len__(self):
return len(self.avtolar)
In [32]:
salon1 = AvtoSalon("MaxAvto")
# Avto obyektlarini yaratamiz
avto1 = Avto("GM","Malibu","Qora",2020,40000)
avto2 = Avto("GM","Lacetti","Oq",2020,20000)
avto3 = Avto("Toyota",'Carolla',"Silver",2018, 45000)


# Yuqoridagi obyektlarni salon1 ga qo'shamiz
for avto in [avto1, avto2, avto3]:
salon1.add_avto(avto)
Mana endi bizning AvtoSalon klassimizga oid obyektlar uchun ham len() funksiyasini qo'llasak bo'ladi:
In [33]:
print(len(salon1))
3
OBYEKT ELEMENTLARIGA MUROJAT QILISH
Ba'zi obyektlarning (matn, ro'yxat, lug'at va hokazo) elementlariga alohida murojat qilish mumkin.
In [35]:
mevalar = ['olma','anor','uzum']
mevalar[0]
Out[35]:
'olma'
Bizning salonimizda ham 3 ta avto bor, ularni ko'rish uchun yuqoridagi kabi element raqami orqali murojat qila olamizmi?
In [36]:
salon1[0]
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) in ----> 1 salon1[0] TypeError: 'AvtoSalon' object is not subscriptable
Afsuski yo'q. Ko'rib turganingizdek bizning obyektimizga bunday murojat qilib bo'lmas ekan. Obyektimizga bu xususiyatni qo'shish uchun __getitem__ metodini yozishimiz kerak.
In [39]:
class AvtoSalon:
"""Avtosalon klassi"""
def __init__(self,name):
self.name = name
self.avtolar = []

def add_avto(self,avto):
if isinstance(avto,Avto): # agar avto Avto klassidan bo'lsa
self.avtolar.append(avto)
else:
print("Avto obyketini kiriting")


def __repr__(self):
return f"{self.name} avtosaloni"

def __len__(self):
return len(self.avtolar)

def __getitem__(self,index):
return self.avtolar[index]
Endi salon1 obyektimizning elementlariga murojat qilinganda __getitem__ metodi obyekt ichidagi avtolar ro'yxatidan ko'rsatilgan element (avtomobilni) qaytaradi.
In [42]:
%%capture


salon1 = AvtoSalon("MaxAvto")
# Avto obyektlarini yaratamiz
avto1 = Avto("GM","Malibu","Qora",2020,40000)
avto2 = Avto("GM","Lacetti","Oq",2020,20000)
avto3 = Avto("Toyota",'Carolla',"Silver",2018, 45000)


# Yuqoridagi obyektlarni salon1 ga qo'shamiz
[salon1.add_avto(avto) for avto in [avto1, avto2, avto3]]
In [41]:
len(salon1)
Out[41]:
3
In [43]:
salon1[0]
Out[43]:
Avto: Qora GM Malibu
In [45]:
salon1[1]
Out[45]:
Avto: Oq GM Lacetti
In [46]:
salon1[2]
Out[46]:
Avto: Silver Toyota Carolla
In [47]:
salon1[:]
Out[47]:
[Avto: Qora GM Malibu, Avto: Oq GM Lacetti, Avto: Silver Toyota Carolla]
Keling obyekt elementlaridan birini o'zgartirib ko'ramiz:
In [48]:
avto4 = Avto("Mazda", "6", 'Qizil',2015,35000)
salon1[0]=avto4
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) in 1 avto4 = Avto("Mazda", "6", 'Qizil',2015,35000) ----> 2 salon1[0]=avto4 TypeError: 'AvtoSalon' object does not support item assignment
Yana xatolik. Gap shundaki __getitem__ metodi o'z nomi bilan (get) element qaytaruvchi metod. Biror elementni o'zgartirish uchun esa __setitem__ metodini ham qo'shishimiz kerak. Bu metodimizga murojat qilinganda ham, yangi qiymat Avto klassiga oid ekanligini tekshirib olish maqsadga muvofiq bo'ladi:
In [49]:
class AvtoSalon:
"""Avtosalon klassi"""
def __init__(self,name):
self.name = name
self.avtolar = []

def add_avto(self,avto):
if isinstance(avto,Avto): # agar avto Avto klassidan bo'lsa
self.avtolar.append(avto)
else:
print("Avto obyketini kiriting")


def __repr__(self):
return f"{self.name} avtosaloni"

def __len__(self):
return len(self.avtolar)

def __getitem__(self,index):
return self.avtolar[index]

def __setitem__(self,index,value):
if isinstance(value,Avto):
self.avtolar[index]=value
In [51]:
%%capture


salon1 = AvtoSalon("MaxAvto")
# Avto obyektlarini yaratamiz
avto1 = Avto("GM","Malibu","Qora",2020,40000)
avto2 = Avto("GM","Lacetti","Oq",2020,20000)
avto3 = Avto("Toyota",'Carolla',"Silver",2018, 45000)


# Yuqoridagi obyektlarni salon1 ga qo'shamiz
[salon1.add_avto(avto) for avto in [avto1, avto2, avto3]]
Qaytadan elementni o'zgartirishga harakat qilib ko'ramiz:
In [52]:
avto4 = Avto("Mazda", "6", 'Qizil',2015,35000)
salon1[0]=avto4
print(salon1[0])
Avto: Qizil Mazda 6
Kutilgan natija chiqdi.
OPERATORLARNI QAYTA TALQIN QILISH (OVERLOADING)
Pythonda obyektlar o'rtasida turli arifmetik amallarni bajarish mumkin va bu amallar obyektning turiga qarab, Pytnon tomonidan turlicha talqin qilinadi. Masalan:

Download 10,21 Mb.

Do'stlaringiz bilan baham:
1   ...   35   36   37   38   39   40   41   42   ...   58




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish