Python vorislik (inheritance)
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!
