2. voris klass yaratish
KLASSNING XUSUSIYATLARINI INKAPSULYATSIYA QILISH
Download 83.23 Kb.
|
qosimov pahlavon
- Bu sahifa navigatsiya:
- KLASSLARNI MODULGA AJRATISH
KLASSNING XUSUSIYATLARINI INKAPSULYATSIYA QILISH
Klassga oid xususiyatlar ham huddi yuoqridagi kabi nomidan avval ikki pastki chiziq qo'shish bilan inkapsulyatsiya qilinadi: class Avto: """Avtomobil klassi""" __num_avto = 0 # klassga oid xususiyat def __init__(self,make,model,rang,yil,narh): """Avtomobilning xususiyatlari""" self.make = make self.model = model self.rang = rang self.yil = yil self.narh = narh Avto.__num_avto += 1 Klasslarning o'ziga xos metodlari ham bo'lishi mumkin. Misol uchun yuqoridagi num_avto xususiyatini ko'rish uchun alohida metod yozishimiz mumkin. Klassga oid metodlar @classmethod dekoratori bilan boshlanadi va obyektga oid metodlardan farqli ravishda self emas cls (class) argumentini qabul qiladi. class Avto: """Avtomobil klassi""" __num_avto = 0 def __init__(self,make,model,rang,yil,narh,km=0): """Avtomobilning xususiyatlari""" self.make = make self.model = model self.rang = rang self.yil = yil self.narh = narh self.__km = km self.__id = uuid4() Avto.__num_avto += 1 @classmethod def get_num_avto(cls): return cls.__num_avto Klass metodlarga klassning nomi orqali murojat qilinadi: avto1 = Avto("GM","Malibu","Qora",2020,40000) avto2 = Avto("GM","Lacetti","Oq",2020,20000) avto3 = Avto("Toyota",'Carolla',"Silver",2018, 45000) print(Avto.get_num_avto()) Natija: 3 @classmethod bu maxsus dekorator. Dekoratorlar bu o'z ichiga funksiya oluvchi funksiyalar. Dekoratorlar haqida keyingi darslarimizning birida batafsil to'xtalamiz. KLASSLARNI MODULGA AJRATISH Vaqt o'tishi bilan dasturimizda klasslar ko'payib borishi tabiiy. Bizning asosiy dasturimiz uzun va chigal bo'lmasligi uchun klasslarni ham huddi funksiyalar kabi alohida modullarga ajratish maqsadga muvofiq bo'ladi. Dastur davomida kerak bo'ladigan klasslarga esa modulni chaqirish (import) orqali murojat qilishimiz mumkin. Bunda, bir-biriga bog'liq klasslarni bitta faylga joylashimiz mumkin. Misol uchun, biz Talaba, Professor, Foydalanuvchi va Shaxs degan klasslarni bitta odamlar.py moduliga, Avto, Bus, Train degan klasslarni esa boshqa transport.py moduliga joyladik. Kelajakda biz bu klasslarga import orqali murjat qilishimiz mumkin. 3. Obyektga yo'naltirilgan dasturlashning qulayliklaridan biri bu klasslardan boshqa klass yaratish imkoniyati. Bizga kerak bo'lgan yangi klass, avval yaratilgan boshqa klass bilan o'xshashlik joylari bo'lsa, biz bu klassdan voris klass yaratishimiz mumkin. Bunda asl klass - ota, yoki super klass deb ataladi. Super klassdan yaratilgan voris klass otaning barcha yoki tanlangan xususiyatlari va metodlarini meros olish bilan birga, o'ziga xos xususiyat va metodlariga ega bo'ladi. Keling boshlanishiga Shaxs klassini yaratamiz, bu klassimiz keyinchalik boshqa klasslar uchun super klass vazifasini bajaradi: class Shaxs: """Shaxslar haqida ma'lumot""" def __init__(self,ism,familiya,passport,tyil): self.ism = ism self.familiya = familiya self.passport = passport self.tyil = tyil def get_info(self): """Shaxs haqida ma'lumot""" info = f"{self.ism} {self.familiya}. " info += f"Passport:{self.passport}, {self.tyil}-yilda tug`ilgan" return info def get_age(self,yil): """Shaxsning yoshini qaytaruvchi metod""" return yil - self.tyil Klassimizni tekshirib ko'ramiz: inson = Shaxs("Hasan","Alimov","FB001122",1995) print(f"{inson.get_info()}. {inson.get_age(2021)} yoshda.") Natija: Hasan Alimov. Passport:FB001122, 1995-yilda tug`ilgan. 26 yoshda. Download 83.23 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling