Python - Sinflar va obyektlar
Python Sinflar/obyektlar
Python obyektga yo'naltirilgan dasturlash tilidir.
Python'da deyarli hamma narsa o'ziga xos xususiyatlari va metodlari bilan obyektdir.
Sinf obyektlar yaratish uchun konstruktor yoki "reja"ga o'xshaydi.
Sinf Yaratish
Sinf yaratish uchun class kalit so'zidan foydalaning:
Misol
MeningSinpim nomli sinf yarating, x nomli xususiyat bilan:
class MeningSinpim:
x = 5obyekt Yaratish
Endi biz MeningSinpim nomli sinfdan foydalanib obyektlar yaratishimiz mumkin:
Misol
p1 nomli obyekt yarating va x qiymatini chop eting:
p1 = MeningSinpim()
print(p1.x)__init__() Funksiyasi
Yuqoridagi misollar sinflar va obyektlarning eng oddiy shaklidir va real hayot ilovalarida unchalik foydali emas.
Sinflarning ma'nosini tushunish uchun ichki __init__() funksiyasini tushunishimiz kerak.
Barcha sinflarda har doim sinf ishga tushirilganda bajariladigan __init__() nomli funksiya mavjud.
__init__() funksiyasidan obyekt xususiyatlariga qiymatlar belgilash yoki obyekt yaratilganda bajarilishi kerak bo'lgan boshqa operatsiyalar uchun foydalaning:
Misol
Shaxs nomli sinf yarating, ism va yosh uchun qiymatlarni belgilash uchun __init__() funksiyasidan foydalaning:
class Shaxs:
def __init__(self, ism, yosh):
self.ism = ism
self.yosh = yosh
p1 = Shaxs("John", 36)
print(p1.ism)
print(p1.yosh)Eslatma: __init__() funksiyasi har safar sinf yangi obyekt yaratish uchun ishlatilganda avtomatik ravishda chaqiriladi.
__str__() Funksiyasi
__str__() funksiyasi sinf obyekti satr sifatida tasvirlanganda nima qaytarilishi kerakligini boshqaradi.
Agar __str__() funksiyasi o'rnatilmagan bo'lsa, obyektning satr tasviri qaytariladi:
Misol
__str__() funksiyasisiz obyektning satr tasviri:
class Shaxs:
def __init__(self, ism, yosh):
self.ism = ism
self.yosh = yosh
p1 = Shaxs("John", 36)
print(p1)Misol
__str__() funksiyasi bilan obyektning satr tasviri:
class Shaxs:
def __init__(self, ism, yosh):
self.ism = ism
self.yosh = yosh
def __str__(self):
return f"{self.ism}({self.yosh})"
p1 = Shaxs("John", 36)
print(p1)obyekt Metodlari
obyektlar metodlarni ham o'z ichiga olishi mumkin. obyektdagi metodlar obyektga tegishli bo'lgan funksiyalardir.
Keling, Shaxs sinfida metod yarating:
Misol
Salomlashuvni chop etadigan funksiyani qo'shing va uni p1 obyektida bajaring:
class Shaxs:
def __init__(self, ism, yosh):
self.ism = ism
self.yosh = yosh
def mening_metodim(self):
print("Salom, mening ismim " + self.ism)
p1 = Shaxs("John", 36)
p1.mening_metodim()Eslatma: self parametri joriy sinf namunasi uchun havola bo'lib, sinfga tegishli o'zgaruvchilarga kirish uchun ishlatiladi.
Self Parametri
self parametri joriy sinf namunasi uchun havola bo'lib, sinfga tegishli o'zgaruvchilarga kirish uchun ishlatiladi.
Uning nomi self bo'lishi shart emas, siz uni xohlagan nom bilan atashingiz mumkin, lekin u sinfdagi har qanday funksiyaning birinchi parametri bo'lishi kerak:
Misol
self o'rniga mening_obektim va abc so'zlarini ishlatish:
class Shaxs:
def __init__(mening_obektim, ism, yosh):
mening_obektim.ism = ism
mening_obektim.yosh = yosh
def mening_metodim(abc):
print("Salom, mening ismim " + abc.ism)
p1 = Shaxs("John", 36)
p1.mening_metodim()obyekt Xususiyatlarini O'zgartirish
obyekt xususiyatlarini quyidagicha o'zgartirishingiz mumkin:
Misol
p1 ning yoshini 40 ga o'rnatish:
p1.yosh = 40obyekt Xususiyatlarini O'chirish
obyektdagi xususiyatlarni del kalit so'zi yordamida o'chirishingiz mumkin:
Misol
p1 obyektidan yosh xususiyatini o'chirish:
del p1.yoshobyektlarni O'chirish
obyektlarni del kalit so'zi yordamida o'chirishingiz mumkin:
Misol
p1 obyektini o'chirish:
del p1Pass Ibora
Sinf ta'riflari bo'sh bo'la olmaydi, lekin agar biron sababga ko'ra ichida hech narsa bo'lmagan sinf ta'rifingiz bo'lsa, xatolikni oldini olish uchun pass iborasini qo'ying.
Misol
class Shaxs:
pass