Oxirgi maqolada biz Python OOP haqida qisman ma’lumotga ega bo’ldik. Bilamizki, python ham ob’ektlar va klasslar tushunchasini qo’llab-quvvatlaydi.
Ob’ekt shunchaki ma’lumotlar (o’zgaruvchilar) va metodlar (funksiyalar) to’plamidir. Xuddi shunday, klass bu ob’ekt uchun qolipdir.
Ob’ektlar haqida ma’lumot olishdan oldin, Python tilidagi klasslar haqida bilib olaylik.
Python klasslari:
Klass ob’ektlar rejasi sifatida qaraladi. Biz klassni uyning eskizi (prototipi) sifatida tasavvur qilishimiz mumkin. Unda pollar, eshiklar, derazalar va boshqalar haqida barcha ma’lumotlar mavjud. Ushbu tavsiflarga asoslanib, biz uy quramiz. Uy – bu ob’ekt.
Xuddi shu tavsifdan ko’plab uylar yasalishi mumkinligi sababli, biz klassdan ko’plab ob’ektlarni yaratishimiz mumkin.
Pythonda class yaratish:
Pythonda klass yaratish uchun class kalit so’zidan foydalanamiz. Masalan,
class ClassName:
#Bu erda biz ClassName nomli klass yaratdik.
Keling, bir misolni ko’rib chiqaylik,
class Bike:
name = ""
gear = 0
Bu yerda Bike– klass nomi
name va gear – mos ravishda standart qiymatlari “” va 0 bo’lgan klass ichidagi o’zgaruvchilar.
Eslatma: Klass ichidagi o’zgaruvchilar atributlar deb ataladi.
Python Ob’ektlari:
Ob’ekt klassning namunasi deb ataladi. Masalan, Bike klass deylik, u holda klassdan bike1, bike2 va hokazo ob’ektlarni yaratishimiz mumkin.
Quyida ob’ekt yaratish sintaksisi ko’rsatilgan:
objectName = ClassName()
#Bunda objectName bu ob'ekt nomi, ClassName esa klass nomi
Keling, bir misolni ko’rib chiqaylik,
# klass yaratish
class Bike:
name = ""
gear = 0
# klassdan ob'ekt yaratish
bike1 = Bike()
Bu yerda bike1 klassning ob’ekti hisoblanadi. Endi biz ushbu ob’ektdan klass atributlariga kirish uchun foydalanishimiz mumkin.
Ob’ektlar yordamida klass atributlariga kirish:
Klassning atributlariga kirish uchun nuqta(.)dan foydalanamiz. Masalan,
# name atributini o'zgartirish
bike1.name = "Mountain Bike"
# gear atributiga kirish
bike1.gear
Bu yerda biz mos ravishda name va gear atributining qiymatini o’zgartirish va ularga kirish uchun bike1.name va bike1.gear dan foydalandik.
1-misol: Python klassi va ob’ektlari:
# klass e'lon qilish
class Bike:
name = ""
gear = 0
# klassdan ob'ekt yaratish
bike1 = Bike()
# atributlarga murojaat qilish va yangi qiymat berish
bike1.gear = 11
bike1.name = "Mountain Bike"
print(f"Name: {bike1.name}, Gears: {bike1.gear} ")
Natija:
Name: Mountain Bike, Gears: 11
Yuqoridagi misolda biz ikkita name va gear atributlariga ega bo’lgan Bike nomli klass yaratdik.
Shuningdek, biz Bike klassidan foydalanib bike1 nomli ob’ekt yaratdik.
Nihoyat, biz ob’ektning atributlariga nuqta orqali kirib, ularni o’zgartirdik.
Pythonda klassning bir nechta ob’ektlarini yaratish:
Bundan tashqari, bitta klassdan bir nechta ob’ektlarni yaratishimiz mumkin. Masalan,
# klass yaratish
class Employee:
# atribut yaratish
employee_id = 0
# Employee klassdan foydalanib 2 ta ob'ekt yaratish
employee1 = Employee()
employee2 = Employee()
# employee1 yordamida atributlarga murojaat qilish
employee1.employee_id = 1001
print(f"Employee ID: {employee1.employee_id}")
# employee2 yordamida atributlarga murojaat qilish
employee2.employee_id = 1002
print(f"Employee ID: {employee2.employee_id}")
Natija:
Employee ID: 1001
Employee ID: 1002
Yuqoridagi misolda biz Employee klassining employee1 va employee2 nomli ikkita ob’ektini yaratdik.
Pythonda metodlar:
Shuningdek, biz Python klassi ichida funksiya yaratishimiz mumkin. klass ichida yaratilgan Python funksiyasi metod deyiladi.
Keling, bir misolni ko’rib chiqaylik,
# klass yaratish
class Room:
length = 0.0
breadth = 0.0
# xonaning o'lchamini aniqlovchi metod
def calculate_area(self):
print("Area of Room =", self.length * self.breadth)
# Room klassidan ob'ekt yaratish
study_room = Room()
# barcha atributlarga qiymat berish
study_room.length = 42.5
study_room.breadth = 30.8
# klass ichidagi metodga murojaat qilish
study_room.calculate_area()
Natija:
Area of Room = 1309.0
Yuqoridagi misolda biz Room nomli klass yaratdik:
- Atributlar: length va breadth
- Metod:
calculate_area()
Bu yerda biz Room sinfidan study_room nomli ob’ektni yaratdik. Keyin ob’ektdan length va breadth atributlariga qiymatlarni belgilash uchun foydalandik.
E’tibor bering, biz ob’ektdan klass ichidagi metodni chaqirish uchun ham foydalanganmiz,
study_room.calculate_area()
Bu yerda bir nuqta orqali metodni chaqirdik. Nihoyat, metod ichidagi statement bajarildi.
Python Konstruktorlari:
Avvalroq biz klass atributiga standart qiymat bergan edik,
class Bike:
name = ""
...
# ob'ekt yaratish
bike1 = Bike()
Biroq, biz konstruktorlar yordamida qiymatlarni ishga tushirishimiz ham mumkin. Masalan,
class Bike:
# constructor funksiya
def __init__(self, name = ""):
self.name = name
bike1 = Bike()
Bu erda __init__() konstruktor funksiyasi bo’lib, u klassning yangi ob’ekti yaratilganda chaqiriladi.
Yuqoridagi konstruktor name atributining qiymatini ishga tushiradi. Biz bike1 obyektining name atributiga murojaat qilish uchun self.name dan foydalandik.
Agar biz klass ichidagi qiymatlarni ishga tushirish uchun konstruktordan foydalansak, klass ob’ektini yaratish jarayonida mos keladigan qiymatni o’tkazishimiz kerak.
bike1 = Bike("Mountain Bike")
Bu erda “Mountain Bike” qiymati __init__() funksiyaning name nomli parametriga o’tkaziladi.