Skip to content

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:

python
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:

python
class Talaba(Shaxs):
    pass

Eslatma: 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:

python
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:

python
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 ​

python
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 ​

python
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:

python
class Talaba(Shaxs):
    def __init__(self, ism, familiya):
        super().__init__(ism, familiya)
        self.bitiruv_yili = 2019

Quyidagi 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:

python
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:

python
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")

Python - OOP Meros Olish (Inheritance) mavzusida test

Savol 1 / 7

Python OOP da bir klass (baza sinfi) xususiyat va metodlarini ikkinchi klassga berishi nima deyiladi va u qanday e'lon qilinadi?


Agar bola sinfda ota-ona sinfdagi funksiya bilan bir xil nomdagi metod qo'shsangiz, ota-ona metodining merosi `qayta yoziladi`.