Python Meros (Sinf/Class)

Merosxurlik bizga boshqa sinfdan barcha qiymatlarni meros qilib oladigan sinfni aniqlashni imkonini beradi. Bunda Sinflar ota-sinf va bola-sinf deb yuritiladi.

  • Ota-sinf: bu meros bo'lib qolgan sinf hisoblanib, u asosiy sinf deb ham ataladi.
  • Bola-sinf: bu boshqa sinfdan meros bo'lib qolgan sinf, hosila sinf deb ham ataladi.

OTA-Sinf yaratish

Har qanday yaratilgan sinf ota-sinf bo'lishi mumkin, shuning uchun sintaksis boshqa sinflarni yaratish bilan bir xil hisoblanadi.

class Person:
  def __init__(self, fname, lname):
     self.firstname = fname
     self.lastname = lname

  def printname(self):
      print(self.firstname, self.lastname)

x = Person("John""Doe")
x.printname()

Bola Sinf yaratish

Funksionallikni boshqa sinfdan meros qilib oladigan sinf yaratish uchun asosiy sinfni bola sinfini yaratishda parametr sifatida yuboring.

class Student(Person):
  pass
Eslatma: pass Agar sinfga boshqa xususiyat yoki usullarni qo'shishni xohlamasangiz , kalit so'zdan foydalaning . Ushbu so'zdan keyingi barcha elementni (sinf ichidagi) ishlashidan to'xtatadi va Joriy Sinf faoliyatini to'xtatadi.

Endi Student bilan Person sinfi bilan bir xil xususiyatga ega.

x = Student("Furqat""Masharipov")
x.printname()

__init__() funktsiyasini qo'shish

Yuqorida biz siz bilan ota xususiyatlarni meros qilib olgan bola sinfini yaratdik, __init__() funksiyasini pass kalit so'zi o'rniga yozamiz.

class Student(Person):
  def __init__(self, fname, lname):
    # bir qancha komandalar
Eslatma: __init__() funksiyasini qo'shsangiz ota-sinfdagi __init__() funksiyasini meros qilib olmaydi.

Ota-Sinf funksiyasini saqlab qolish uchun bola-sinfida ota sinf __init__() funksiyasini biriktirib ketishimiz kerak bo'ladi.

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

super() funksiyasidan foydalaning

Python dasturlash tilida shuningdek super() bolalar sinfini ota sinfidan barcha usullar va xususiyatlarini meros qilib oladigan funksiyaga ega.

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)