12-Maruza: Sinflarni modullarda aniqlash va ularni bog‘lash
Sinflarda Vorislik tushunchasi
Vorislik - bu atama sinflarga xosdir. Vorislik deb bir sinfdagi barcha funksiya va xususiyatlarni boshqa bir sinf o‘ziga o‘zlashtirishiga aytiladi. Funksiyalari meros qilib olinadigan sinf ona sinf deyiladi. Meros qilib olingan funksiyalarni o‘ziga o‘zlashtiradigan sinf voris sinf deyiladi.
Ona sinf hosil qilish
Istalgan sinf ona sinf bo‘lishi mumkin. Shu sababli ona sinfni hosil qilish xuddi oddiy sinfni hosil qilish kabidir. Hozir odam degan sinf hosil qilamiz. Unda ism va familiya parametrlari va tanish degan funksiyasi bo‘ladi. So‘ngra shu sinf orqali x obyekt hosil qilamiz
Bu kod Python tilida "Odam" nomli klassni yaratadi. Bu klassning vazifasi insonlarni ifodalashdir.
def __init__(self, ism, familiya): qismida __init__ metod yaratiladi. Bu metod obyekt yaratilganda avtomatik ravishda chaqiriladi. Bu metod orqali obyektga xususiyatlar (ism va familiya) yuklanadi.
self.ism = ism va self.familiya = familiya qatorlarida obyektning ismi va familiyasi xususiyatlarini yuklash uchun self kalit so‘zi va ma'lumotlar berilgan.
def tanish(self): qismida tanish metodi yaratiladi. Bu metod obyektning ismini va familiyasini ekranga chiqaradi.
x = Odam("Alisher", "Baxromov") qismida Odam klassidan x nomli yangi obyekt yaratiladi. Uning ismi "Alisher" va familiyasi "Baxromov" bo‘ladi.
x.tanish() qatorida esa tanish metodi chaqiriladi va "Alisher Baxromov" ekranga chiqariladi.
Voris sinf hosil qilish
Voris sinf hosil qilish uchun yangi sinf tuzilayotganda ona sinfni paramet sifatida kiritamiz. Shunda voris sinf ona sinfdan barcha xususiyatlarni o‘zlashtiradi. Hozir Talaba degan sinf hosil qilamiz. Odam sinfi uning onam sinfi bo‘ladi. Qavslar ichida ona sinfni kirittamiz va uning barcha xususiyatlarini voris sinf o‘zlashtiradi. Qo‘shimcha parametr qo‘shish shart emas, ammo sinf hosil qilayotganda ichi bo‘sh bo‘lishi ham mumkin emas. Agar hechnarsa yozishni istamasak xatolik yuz bermasligi uchun pass kalit so‘zini qo‘shib qo‘yamiz:
Odam klassining ichida:
- __init__ metodi yangi obyektlar yaratilganda avtomatik chaqiriladi. U obyektga ism va familiyani yuklaydi.
- tanish metodi obyektning ism va familiyasini ekranga chiqaradi.
Talaba klassi esa "Odam" klassidan meros olgan. U "Odam" klassining barcha xususiyatlarini va metodlarini o‘z ichiga oladi.
x = Talaba("Asadbek", "Suvonov") qatorda "Talaba" klassidan yangi obyekt yaratiladi, "Asadbek" ismi va "Suvonov" familiyasi bilan.
x.tanish() qatorda esa tanish metodi chaqiriladi. Bu metod "Odam" klassining bir xususiyati bo‘lib, "Asadbek Suvonov" ekranga chiqariladi.
Kod quyidagi vazifalarni bajaradi:
1. Odam klassi inson obyektlarini ifodalaydi.
2. Talaba klassi Odam klassidan meros oladi.
3. Talaba klassi tanish metodini mo‘ljallangan obyektiga qo‘shadi
__init__() funksiyasini qo‘shish
Avvalgi misolimizda voris sinf hosil qilganimizda pass kalit so‘zi bilan cheklanib qo‘ya qoldik. Shu sababli voris sinf barcha funksiyalarni avtomatik tarzda o‘zlashtirgan edi. Endi voris sinfga __init__() funksiyasi bilan parametrlarini joylashtiramiz. Bunda voris sinf ona sinfdagi __init__() funksiyasidan emas o‘zidagidan foydalanadi.
super() funksiyasi
Sinflar bilan ishlash uchun maxsus super() funksiyasi ham mavjud. Bu funksiya ona sinfdagi barcha funksiya va parametrlarni voris sinfga o‘zlashtiradi:
Parametr qo‘shish
Voris sinf hosil qilingach unga yana qo‘shimcha parameter qo‘shmoqchi bo‘lsak quyidagicha amalga oshirish mumkin. Hozir yil parametrini qo‘shamiz:
|