Python vorislik (inheritance)


ULASHISH

Python merosi

Meros bizga boshqa sinfdan barcha usullar va xususiyatlarni meros qilib oladigan classni aniqlash imkonini beradi.

Ota-class - bu meros qilib olingan class, uni asosiy class deb ham ataladi.

Child class - bu boshqa sinfdan meros bo‘lib qolgan class, hosila class deb ham ataladi.


Ota-onalar sinfini yarating

Har qanday class ota-class bo‘lishi mumkin, shuning uchun sintaksis boshqa classlarni yaratish bilan bir xil:

Misol

firstname valastnamexossalari va printname usuli bilan Person nomli class yarating:

class Person:   def __init__(self, fname, lname):     self.firstname = fname     self.lastname = lname   def printname(self):     print(self.firstname, self.lastname) #Use the Person class to create an object, and then execute the printname method: x = Person("John", "Doe") x.printname()
O‘zingiz sinab ko‘ring »

Bolalar sinfini yarating

Funksionallikni boshqa sinfdan meros qilib oladigan class yaratish uchun asosiy classni bolalar sinfini yaratishda parametr sifatida yuboring:

Misol

Person sinfidan xususiyatlar va usullarni meros qilib oladigan Student nomli class yarating:

class Student(Person):   pass

Eslatma: Sinfga boshqa xususiyat yoki usullarni qo‘shishni xohlamasangiz,passkalit so‘zidan foydalaning.

Endi Student sinfi Person sinfi bilan bir xil xususiyat va usullarga ega.

Misol

Obyekt yaratish uchun Student sinfidan foydalaning va keyin printname usulini bajaring:

x = Student("Mike", "Olsen") x.printname()
O‘zingiz sinab ko‘ring »


__init__() funksiyasini qo‘shing

Hozirgacha biz ota-onasidan xususiyatlar va usullarni meros qilib olgan bolalar sinfini yaratdik.

Biz __init__() funksiyasini bolalar sinfiga qo‘shmoqchimiz (passkalit so‘zi o‘rniga).

Eslatma:__init__() funksiyasi har safar yangi obyekt yaratish uchun sinfdan foydalanilganda avtomatik ravishda chaqiriladi.

Misol

__init__() funksiyasini Student sinfiga qo‘shing:

class Student(Person):   def __init__(self, fname, lname):     #add properties etc.

__init__() funksiyasini qo‘shsangiz, bolalar sinfi endi ota-onaning __init__() funksiyasini meros qilib olmaydi.

Eslatma: Bolaning __init__() funksiyasi ota-onaning __init__() funksiyasining merosini bekor qiladi.

Ota-onaning __init__() funksiyasining merosini saqlab qolish uchun ota-onaning __init__() funksiyasini chaqiruvchi kodni qo‘shing:

Misol

class Student(Person):   def __init__(self, fname, lname):     Person.__init__(self, fname, lname)
O‘zingiz sinab ko‘ring »

Endi biz __init__() funksiyasini muvaffaqiyatli qo‘shdik va ota-klassning merosini saqlab qoldik va biz __init__() funksiyasiga funksiya qo‘shishga tayyormiz.


super() funksiyasidan foydalaning

Pythondasuper()funksiyasi ham mavjud bo‘lib, u bolalar sinfini ota-onasidan barcha usullar va xususiyatlarni meros qilib olishiga imkon beradi:

Misol

class Student(Person):   def __init__(self, fname, lname):     super().__init__(fname, lname)
O‘zingiz sinab ko‘ring »

super()funksiyasidan foydalanib, siz ota-element nomini ishlatishingiz shart emas, u avtomatik ravishda ota-onasidan usullar va xususiyatlarni meros qilib oladi.


Xususiyatlar qo‘shish

Misol

Student sinfiga graduationyear nomli xususiyatni qo‘shing:

class Student(Person):   def __init__(self, fname, lname):     super().__init__(fname, lname)     self.graduationyear = 2019
O‘zingiz sinab ko‘ring »

Quyidagi misolda 2019 yil o‘zgaruvchi bo‘lishi va talaba obyektlarini yaratishda Student sinfiga o‘tishi kerak. Buning uchun __init__() funksiyasiga boshqa parametr qo‘shing:

Misol

yearparametrini qo‘shing va obyektlarni yaratishda to‘g‘riyearni kiriting:

class Student(Person):   def __init__(self, fname, lname, year):     super().__init__(fname, lname)     self.graduationyear = year x = Student("Mike", "Olsen", 2019)
O‘zingiz sinab ko‘ring »

Usullarni qo‘shish

Misol

Student sinfigawelcomedeb nomlangan usulni qo‘shing:

class Student(Person):   def __init__(self, fname, lname, year):     super().__init__(fname, lname)     self.graduationyear = year   def welcome(self):     print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)
O‘zingiz sinab ko‘ring »

Agar siz ota-sinfdagi funksiya bilan bir xil nomdagi usulni bolalar sinfiga qo‘shsangiz, ota-ona usulining merosi bekor qilinadi.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!