Print("Assalom alaykum")


Sonlar: In [54]: x,y=10,20 x+y Out[54]: 30 In [56]: x*5 Out[56]: 50 Matnlar



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

Sonlar:
In [54]:
x,y=10,20
x+y
Out[54]:
30
In [56]:
x*5
Out[56]:
50
Matnlar:
In [57]:
t1 = "hello"
t2 = "world"
t1+t2
Out[57]:
'helloworld'
In [59]:
t1*5
Out[59]:
'hellohellohellohellohello'
Ro'yxatlar:
In [60]:
l1 = [1, 2, 3]
l2 = [4, 5, 6]
l1+l2
Out[60]:
[1, 2, 3, 4, 5, 6]
In [61]:
l1*2
Out[61]:
[1, 2, 3, 1, 2, 3]
va hokazo.
Keling, bu amallarni bizning obyektimizga ham qo'llab ko'ramiz. Boshlanishiga 2 ta avtosalon yarataylik, va har biriga alohida avtolar qo'shaylik. Ishimizni osonlashtirish uchun add_avto() metodimizni ham istalgancha parametr qabul qilishga moslab o'zgartiramiz:
In [62]:
class AvtoSalon:
"""Avtosalon klassi"""
def __init__(self,name):
self.name = name
self.avtolar = []


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

def add_avto(self,*qiymat):
for avto in qiymat:
if isinstance(avto,Avto):
self.avtolar.append(avto)
else:
print("Avto obyketini kiriting")
Obyektlarni yaratamiz:
In [66]:
# 2 ta avtosalon yaratamiz
salon1 = AvtoSalon("MaxAvto")
salon2 = AvtoSalon("Avto Lider")
In [67]:
# 6 ta avto obyektini yaratamiz
avto1 = Avto("GM","Malibu","Qora",2020,40000)
avto2 = Avto("GM","Lacetti","Oq",2020,20000)
avto3 = Avto("Toyota",'Carolla',"Silver",2018, 45000)
avto4 = Avto("Mazda", "6", 'Qizil',2015,35000)
avto5 = Avto("Volkswagen","Polo",'Qora',2015,30000)
avto6 = Avto("Honda","Accord","Oq",2017,42000)
In [68]:
# Birinchi uchta avtoni birinchi salonga, keyingi uchtasini 2-salonga qo'shamiz.
salon1.add_avto(avto1, avto2, avto3)
salon2.add_avto(avto4, avto5, avto6)
Mavzuga qaytamiz. Operatorlarni qayta talqin qilish. Keling boshlanishiga ikki obyektni qo'shib ko'ramiz:
In [69]:
salon1+salon2
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) in ----> 1 salon1+salon2 TypeError: unsupported operand type(s) for +: 'AvtoSalon' and 'AvtoSalon'
Demak, bu ikki obyektni qo'shib bo'lmas ekan. Biz obyekt egasi sifatida qo'shish operatorini o'zimiz istagancha talqin qilishimiz mumkin. Misol uchun AvtoSalon obyektiga boshqa AvtoSalon obyektini qo'shganda, yangi AvtoSalon obyektini qaytaraylik va bu yangi obyekt avvalgi ikki obyektning avtolariga ega bo'lsin.
Qo'shish operatorini qayta talqin qilish uchun AvtoSalon klassimizga __add__ metodini qo'shamiz.
In [70]:
class AvtoSalon:
"""Avtosalon klassi"""
def __init__(self,name):
self.name = name
self.avtolar = []


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

def add_avto(self,*qiymat):
for avto in qiymat:
if isinstance(avto,Avto):
self.avtolar.append(avto)
else:
print("Avto obyketini kiriting")


def __add__(self,qiymat):
if isinstance(qiymat,AvtoSalon):
yangi_salon = AvtoSalon(f"{self.name} {qiymat.name}")
yangi_salon.avtolar = self.avtolar + qiymat.avtolar
return yangi_salon
In [71]:
salon1 = AvtoSalon("MaxAvto")
salon1.add_avto(avto1, avto2, avto3)
salon2 = AvtoSalon("Avto Lider")
salon2.add_avto(avto4, avto5, avto6)
Qo'shish operatorini tekshirib ko'ramiz:
In [72]:
salon3 = salon1+salon2
In [73]:
print(salon3)
MaxAvto Avto Lider avtosaloni
In [74]:
salon3[:]
Out[74]:
[Avto: Qora GM Malibu,
Avto: Oq GM Lacetti,
Avto: Silver Toyota Carolla,
Avto: Qizil Mazda 6,
Avto: Qora Volkswagen Polo,
Avto: Oq Honda Accord]
Istasak, qo'shish operatori yordamida salonga yangi Avto qo'shish imkoniyatini ham yaratishimiz mumkin:
In [75]:
class AvtoSalon:
"""Avtosalon klassi"""
def __init__(self,name):
self.name = name
self.avtolar = []


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

def add_avto(self,*qiymat):
for avto in qiymat:
if isinstance(avto,Avto):
self.avtolar.append(avto)
else:
print("Avto obyketini kiriting")


def __add__(self,qiymat):
if isinstance(qiymat,AvtoSalon):
yangi_salon = AvtoSalon(f"{self.name} {qiymat.name}")
yangi_salon.avtolar = self.avtolar + qiymat.avtolar
return yangi_salon
elif isinstance(qiymat,Avto):
self.add_avto(qiymat)
else:
print(f"AvtoSalon ga {type(qiymat)} qo`shib bo`lmaydi")
Tekshirib ko'ramiz:
In [76]:
salon1 = AvtoSalon("MaxAvto")
salon1.add_avto(avto1, avto2, avto3)
newAvto = Avto("BMW", 'X7','Qora',2015,75000)
salon1 + newAvto
print(salon1[:])
[Avto: Qora GM Malibu, Avto: Oq GM Lacetti, Avto: Silver Toyota Carolla, Avto: Qora BMW X7]
Huddi shu kabi boshqa operatorlarni ham o'zingiz istalgancha talqin qilishingiz mumkin:

OBYEKTNI CHAQIRISH
Obyektlarni huddi funksiyalarni chaqirgandek chaqirish ham mumkin. Odatda biror funksiyaga murojat qilganda funksiya nomidan so'ng qavslar ochiladi va yopiladi. Agar funksiya argument qabul qilsa, ular qavs ichida beriladi.
In [77]:
print(10)
10
In [78]:
len("salom")
Out[78]:
5
Biz obyektimizga ham shunday imkoniyat qo'shishimiz mumkin. Buning uchun maxsus __call__ metodidan foydalaniladi.
PARAMETRSIZ CHAQIRISH
Misol uchun, kelign yuqoridagi AvtoSalon klassiga oid obyektlar chaqirilganda salondagi avtomobillar ro'yxatini ko'rsatadigan qilaylik. Buning uchu AvtoSalon klassiga quyidagi metodni qo'shamiz:
In [79]:
class AvtoSalon:
"""Avtosalon klassi"""
def __init__(self,name):
self.name = name
self.avtolar = []


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

def add_avto(self,*qiymat):
for avto in qiymat:
if isinstance(avto,Avto):
self.avtolar.append(avto)
else:
print("Avto obyketini kiriting")


def __add__(self,qiymat):
if isinstance(qiymat,AvtoSalon):
yangi_salon = AvtoSalon(f"{self.name} {qiymat.name}")
yangi_salon.avtolar = self.avtolar + qiymat.avtolar
return yangi_salon
elif isinstance(qiymat,Avto):
self.add_avto(qiymat)
else:
print(f"AvtoSalon ga {type(qiymat)} qo`shib bo`lmaydi")


def __call__(self):
return [avto for avto in self.avtolar]
In [80]:
salon1 = AvtoSalon("MaxAvto")
salon1.add_avto(avto1, avto2, avto3)
Mana endi obyekt chaqirib ko'ramiz:
In [81]:
salon1()
Out[81]:
[Avto: Qora GM Malibu, Avto: Oq GM Lacetti, Avto: Silver Toyota Carolla]
PARAMETR BILAN CHAQIRISH
Yuqorida salon1 ni parametrsiz chaqrishini ko'rdik. Keling endi parametr bilan chaqirishni ham yo'lga qo'yaylik. Bunda, yuborilgan parametr yangi avto obyekti bo'lsin, va bu parametr salondagi avtolar ro'yxatiga qo'shilsin. Metodimizni quyidagicha o'zgartiramiz:
In [82]:
class AvtoSalon:
"""Avtosalon klassi"""
def __init__(self,name):
self.name = name
self.avtolar = []


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

def add_avto(self,*qiymat):
for avto in qiymat:
if isinstance(avto,Avto):
self.avtolar.append(avto)
else:
print("Avto obyketini kiriting")


def __add__(self,qiymat):
if isinstance(qiymat,AvtoSalon):
yangi_salon = AvtoSalon(f"{self.name} {qiymat.name}")
yangi_salon.avtolar = self.avtolar + qiymat.avtolar
return yangi_salon
elif isinstance(qiymat,Avto):
self.add_avto(qiymat)
else:
print(f"AvtoSalon ga {type(qiymat)} qo`shib bo`lmaydi")


def __call__(self,*param):
if param: # agar parametr bo'lsa
for avto in param:
self.add_avto(avto)
else: # agar parametr bo'lmasa
return [avto for avto in self.avtolar]
Endi bizning klassimizga ham parametr bilan, ham parametrsiz chaqirish imkoniyati qo'shildi.
In [84]:
salon1 = AvtoSalon("MaxAvto")
avto_new = Avto("Mercedes-Benz", 'E200','Silver',2015,80000)



Download 10,21 Mb.

Do'stlaringiz bilan baham:
1   ...   36   37   38   39   40   41   42   43   ...   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