Python - Meros Olish
Python Meros Olish
Meros olish bizga boshqa sinfdan barcha metodlar va xususiyatlarni meros qilib oladigan sinfni aniqlash imkonini beradi.
Ota-ona sinfi meros qilinadigan sinf bo'lib, u baza sinf deb ham ataladi.
Bola sinfi boshqa sinfdan meros oladigan sinf bo'lib, u tushirilgan sinf deb ham ataladi.
Ota-ona Sinfini Yaratish
Har qanday sinf ota-ona sinfi bo'lishi mumkin, shuning uchun sintaksis boshqa sinf yaratish bilan bir xil:
Misol
Shaxs nomli sinf yarating, ism va familiya xususiyatlari va ism_chop_etish metodiga ega:
class Shaxs:
def __init__(self, ism, familiya):
self.ism = ism
self.familiya = familiya
def ism_chop_etish(self):
print(self.ism, self.familiya)
# Shaxs sinfidan obyekt yarating va ism_chop_etish metodini bajaring:
x = Shaxs("John", "Doe")
x.ism_chop_etish()Bola Sinfini Yaratish
Boshqa sinfdan funksionallikni meros qilib oladigan sinf yaratish uchun bola sinfni yaratishda ota-ona sinfni parametr sifatida uzating:
Misol
Talaba nomli sinf yarating, u Shaxs sinfidan xususiyatlar va metodlarni meros qilib oladi:
class Talaba(Shaxs):
passEslatma: Agar sinfga boshqa xususiyatlar yoki metodlar qo'shishni xohlamasangiz, pass kalit so'zidan foydalaning.
Endi Talaba sinfi Shaxs sinfi bilan bir xil xususiyatlar va metodlarga ega.
Misol
Talaba sinfidan obyekt yarating va ism_chop_etish metodini bajaring:
x = Talaba("Mike", "Olsen")
x.ism_chop_etish()__init__() Funksiyasini Qo'shish
Hozirgacha biz ota-ona sinfidan xususiyatlar va metodlarni meros qilib oladigan bola sinfni yaratdik.
Biz bola sinfga pass kalit so'zi o'rniga __init__() funksiyasini qo'shmoqchimiz.
Eslatma: __init__() funksiyasi har safar sinf yangi obyekt yaratish uchun ishlatilganda avtomatik ravishda chaqiriladi.
Misol
Talaba sinfga __init__() funksiyasini qo'shing:
class Talaba(Shaxs):
def __init__(self, ism, familiya):
# xususiyatlarni qo'shing va h.k.__init__() funksiyasini qo'shganingizda, bola sinf ota-ona sinfning __init__() funksiyasini meros qilib olmaydi.
Eslatma: Bola sinfning __init__() funksiyasi ota-ona sinfning __init__() funksiyasining merosini qayta yozadi.
Ota-ona sinfning __init__() funksiyasining merosini saqlab qolish uchun ota-ona sinfning __init__() funksiyasini chaqiring:
Misol
class Talaba(Shaxs):
def __init__(self, ism, familiya):
Shaxs.__init__(self, ism, familiya)Endi biz __init__() funksiyasini muvaffaqiyatli qo'shdik va ota-ona sinfning merosini saqlab qoldik, endi __init__() funksiyasiga funksionallik qo'shishga tayyormiz.
super() Funksiyasidan Foydalanish
Python'da super() funksiyasi ham mavjud bo'lib, u bola sinfga ota-ona sinfdan barcha metodlar va xususiyatlarni meros qilib olish imkonini beradi:
Misol
class Talaba(Shaxs):
def __init__(self, ism, familiya):
super().__init__(ism, familiya)super() funksiyasidan foydalangan holda, ota-ona elementning nomini ishlatishingiz shart emas, u avtomatik ravishda ota-onadan metodlar va xususiyatlarni meros qilib oladi.
Xususiyatlar Qo'shish
Misol
Talaba sinfga bitiruv_yili nomli xususiyat qo'shing:
class Talaba(Shaxs):
def __init__(self, ism, familiya):
super().__init__(ism, familiya)
self.bitiruv_yili = 2019Quyidagi misolda 2019 yili o'zgaruvchi bo'lishi kerak va talaba obyektlarini yaratishda Talaba sinfga uzatilishi kerak. Buning uchun __init__() funksiyasiga yana bir parametr qo'shing:
Misol
yil parametrini qo'shing va obyektlarni yaratishda to'g'ri yilni uzating:
class Talaba(Shaxs):
def __init__(self, ism, familiya, yil):
super().__init__(ism, familiya)
self.bitiruv_yili = yil
x = Talaba("Mike", "Olsen", 2019)Metodlar Qo'shish
Misol
Talaba sinfga xush_kelibsiz nomli metod qo'shing:
class Talaba(Shaxs):
def __init__(self, ism, familiya, yil):
super().__init__(ism, familiya)
self.bitiruv_yili = yil
def xush_kelibsiz(self):
print("Xush kelibsiz", self.ism, self.familiya, self.bitiruv_yili, "yil sinfiga")Agar bola sinfda ota-ona sinfdagi funksiya bilan bir xil nomdagi metod qo'shsangiz, ota-ona metodining merosi qayta yoziladi.
