33 / 59

Python Objects and Classes

Obyekt va klasslar bilan tanishish

Oldingi darsda biz Python OOP haqida bilib oldik. Python obyektlar va klasslar tushunchasini ham qo'llab-quvvatlashini bilamiz.

Obyekt — oddiygina ma'lumotlar (o'zgaruvchilar) va metodlar (funksiyalar) to'plami. Xuddi shunday, klass — o'sha obyekt uchun chizma (blueprint).

Obyektlar haqida o'rganishdan oldin, keling avval Pythonda klasslar haqida o'rganamiz.

Python klasslari

Klass obyektlarning chizmasi hisoblanadi.

Klassni uy eskizi (prototipi) sifatida tasavvur qilishimiz mumkin. U qavatlar, eshiklar, derazalar va h.k. haqidagi barcha tafsilotlarni o'z ichiga oladi.

Shu tavsiflarga asoslanib, biz uyni quramiz; uy — obyekt.

Bitta tavsifdan ko'plab uylar qurilishi mumkin bo'lgani uchun, biz bitta klassdan ko'plab obyektlar yaratishimiz mumkin.

Python klassini aniqlash

Pythonda klass yaratish uchun class kalit so'zidan foydalanamiz. Masalan,

example.py
class ClassName:
    # klass e'loni 

Bu yerda, biz ClassName nomli klass yaratdik.

Keling, bir misolni ko'ramiz,

example.py
class Bike:
    name = ""
    gear = 0

Bu yerda,

  • Bike - klassning nomi
  • name/gear - klass ichidagi, mos ravishda "" va 0 standart qiymatlariga ega o'zgaruvchilar.

Eslatma: Klass ichidagi o'zgaruvchilar atributlar (attributes) deb ataladi.

Python obyektlari

Obyekt klassning nusxasi (instance) deb ataladi.

Aytaylik, Bike — klass, unda biz shu klassdan bike1, bike2 va hokazo obyektlar yaratishimiz mumkin.

Mana obyekt yaratish sintaksisi.

example.py
objectName = ClassName()

Keling, bir misolni ko'ramiz,

example.py
# klass yaratish
class Bike:
    name = ""
    gear = 0

# klassning obyektini yaratish
bike1 = Bike()

Bu yerda, bike1 — klassning obyekti. Endi, klass atributlariga murojaat qilish uchun shu obyektdan foydalanishimiz mumkin.

Obyektlar yordamida klass atributlariga murojaat qilish

Klass atributlariga murojaat qilish uchun . (nuqta) belgisidan foydalanamiz. Masalan,

example.py
# name xususiyatini o'zgartirish
bike1.name = "Mountain Bike"

# gear xususiyatiga murojaat qilish
bike1.gear

Bu yerda, biz mos ravishda name va gear atributlarining qiymatini o'zgartirish va unga murojaat qilish uchun bike1.name va bike1.geardan foydalandik.

1-misol: Python klass va obyektlari

example.py
# klassni aniqlash
class Bike:
    name = ""
    gear = 0

# klassning obyektini 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

kod
Name: Mountain Bike, Gears: 11

Yuqoridagi misolda, biz ikkita atributga ega Bike nomli klassni aniqladik: name va gear.

Biz shuningdek Bike klassining bike1 obyektini ham yaratdik.

Nihoyat, biz . belgisi yordamida obyektning xususiyatlariga murojaat qildik va ularni o'zgartirdik.

Python klassining bir nechta obyektini yaratish

Bitta klassdan bir nechta obyekt ham yaratishimiz mumkin. Masalan,

example.py
# klassni aniqlash
class Employee:
    # xususiyatni aniqlash
    employee_id = 0

# Employee klassining ikkita obyektini yaratish
employee1 = Employee()
employee2 = Employee()

# employee1 orqali xususiyatga murojaat qilish
employee1.employeeID = 1001
print(f"Employee ID: {employee1.employeeID}")

# employee2 orqali xususiyatlarga murojaat qilish
employee2.employeeID = 1002
print(f"Employee ID: {employee2.employeeID}")

Natija

kod
Employee ID: 1001
Employee ID: 1002

Yuqoridagi misolda, biz Employee klassining ikkita obyektini yaratdik: employee1 va employee2.

Python metodlari

Python klassi ichida funksiya ham aniqlashimiz mumkin. Klass ichida aniqlangan Python funksiyasi metod deb ataladi.

Keling, bir misolni ko'ramiz,

example.py
# klass yaratish
class Room:
    length = 0.0
    breadth = 0.0
    
    # maydonni hisoblovchi metod
    def calculate_area(self):
        print("Area of Room =", self.length * self.breadth)

# Room klassining obyektini yaratish
study_room = Room()

# barcha xususiyatlarga qiymat berish 
study_room.length = 42.5
study_room.breadth = 30.8

# klass ichidagi metodga murojaat qilish
study_room.calculate_area()

Natija

kod
Area of Room = 1309.0

Yuqoridagi misolda, biz quyidagilarga ega Room nomli klass yaratdik:

  • Atributlar: length va breadth
  • Metod: calculate_area()

Bu yerda, biz Room klassidan study_room nomli obyekt yaratdik.

Keyin biz length va breadth atributlariga qiymat berish uchun obyektdan foydalandik.

E'tibor bering, biz klass ichidagi metodni chaqirish uchun ham obyektdan foydalandik,

example.py
study_room.calculate_area()

Bu yerda, biz metodni chaqirish uchun . belgisidan foydalandik. Nihoyat, metod ichidagi operator bajarildi.

Python konstruktorlari

Ilgari biz klass atributiga standart qiymat berdik,

example.py
class Bike:
    name = ""
...
# obyekt yaratish
bike1 = Bike()

Biroq, biz qiymatlarni konstruktorlar yordamida ham ishga tushirishimiz (initialize) mumkin. Masalan,

example.py
class Bike:

    # konstruktor funksiyasi    
    def __init__(self, name = ""):
        self.name = name

bike1 = Bike()

Bu yerda, __init__() — o'sha klassning yangi obyekti yaratilganda har safar chaqiriladigan konstruktor funksiyasi.

Yuqoridagi konstruktor name atributining qiymatini ishga tushiradi.

Biz bike1 obyektining name atributiga murojaat qilish uchun self.namedan foydalandik.

Agar klass ichidagi qiymatlarni ishga tushirish uchun konstruktordan foydalansak, klassning obyektini yaratishda mos qiymatni uzatishimiz kerak.

example.py
bike1 = Bike("Mountain Bike")

Bu yerda, "Mountain Bike" __init__()ning name parametriga uzatiladi.

Ko'proq o'qing: Python inheritance, Polymorphism in Python, Python object(), Python classmethod()

QBilimingizni sinab ko'ring
1 / 3

1. Klass (class) va obyekt (object) orasidagi bog'liqlik qanday?