Assalomu alaykum, yosh dasturchilar! ๐
Bugun biz Class va Object tushunchalarini chuqurroq o'rganamiz
class Talaba:
# Class attribute - barcha talabalar uchun umumiy
universitet = "TATU"
def __init__(self, ism, yosh, kurs):
# Instance attributes - har bir talaba uchun alohida
self.ism = ism
self.yosh = yosh
self.kurs = kurs
self.ball = 0
def oqish(self):
print(f"{self.ism} o'qiyapti...")
# Object yaratish
talaba1 = Talaba("Ali", 18, 1)
talaba2 = Talaba("Zilola", 19, 2)
๐ก Eslatma:
Talaba - class (shablon)talaba1, talaba2 - objectlar (haqiqiy narsalar)self - objectning o'zini bildiradi__init__ - constructorInstance method - bu object bilan ishlaydigan metod.
class Mashina:
def __init__(self, marka, model, yil):
self.marka = marka
self.model = model
self.yil = yil
self.tezlik = 0
self.yoniq = False
self.yoqlg_i = 50 # litr
# Instance method - object bilan ishlaydi
def yoqish(self):
if self.yoqlg_i > 0:
self.yoniq = True
print(f"{self.marka} {self.model} yoqildi!")
else:
print("Yoqilg'i yo'q!")
def harakatlanish(self):
if self.yoniq:
self.tezlik = 60
print(f"{self.marka} harakatlanmoqda...")
else:
print(f"{self.marka} o'chik!")
@classmethod
def universitet_haqida(cls):
print(f"Bu {cls.universitet} universiteti!")
print(f"Jami talabalar soni: {cls.talabalar_soni}")
@staticmethod
def yosh_tekshirish(yosh):
if yosh >= 16:
return "Talaba bo'lish mumkin"
else:
return "Yosh yetarli emas"
๐ก Muhim farqlar:
self - object bilan ishlaydicls - class bilan ishlaydiself - bu objectning o'zini bildiradi. Har bir instance method'ning birinchi parametri.
class O'yinchi:
def __init__(self, ism, daraja=1):
self.ism = ism
self.daraja = daraja
self.jon = 100
self.kuch = 10
self.defans = 5
self.tajriba = 0
def hujum(self, dushman):
# self - bu o'yinchi object'ini bildiradi
zarar = self.kuch * 2
print(f"{self.ism} {dushman}ga {zarar} zarar yetkazdi!")
self.tajriba += 10
return zarar
def himoya(self):
# self orqali object'ning xususiyatlariga murojaat
himoya_kuchi = self.defans * 1.5
print(f"{self.ism} himoya qildi! Himoya kuchi: {himoya_kuchi}")
return himoya_kuchi
class O'yinchi:
# Class attributes
o'yinchi_soni = 0
o'yin_nomi = "Epic Adventure"
def __init__(self, ism, sinf="Jangchi"):
self.ism = ism
self.sinf = sinf
self.daraja = 1
self.jon = 100
self.kuch = 10
self.defans = 5
self.tezlik = 8
self.tajriba = 0
self.pul = 100
self.uskunalar = []
O'yinchi.o'yinchi_soni += 1
# Instance methods
def hujum(self, dushman):
zarar = self.kuch * 2
print(f"{self.ism} {dushman}ga {zarar} zarar yetkazdi!")
self.tajriba += 10
return zarar
def daraja_oshirish(self):
if self.tajriba >= 100:
self.daraja += 1
self.kuch += 5
self.defans += 3
self.tezlik += 2
self.jon += 20
self.tajriba = 0
print(f"๐ {self.ism} {self.daraja}-darajaga ko'tarildi!")
# Class methods
@classmethod
def o'yin_haqida(cls):
print(f"O'yin nomi: {cls.o'yin_nomi}")
print(f"Jami o'yinchilar soni: {cls.o'yinchi_soni}")
@classmethod
def yangi_o'yinchi(cls, ism, sinf):
print(f"Yangi o'yinchi qo'shildi: {ism} ({sinf})")
return cls(ism, sinf)
# Static methods
@staticmethod
def zarar_hisoblash(kuch, defans):
return max(1, kuch - defans)
@staticmethod
def daraja_tekshirish(tajriba):
return tajriba // 100 + 1
๐ก Class Methods afzalliklari:
cls parametrini oladi# Test qilish
print("=== O'yin boshlanmoqda ===")
O'yinchi.o'yin_haqida()
print("\n=== O'yinchilar yaratilmoqda ===")
oyinchi1 = O'yinchi("Ali", "Jangchi")
oyinchi2 = O'yinchi("Zilola", "Sehrgar")
oyinchi3 = O'yinchi.yangi_o'yinchi("Sardor", "Kamandir")
print("\n=== O'yin jarayoni ===")
oyinchi1.ma_lumot_ko_rsatish()
oyinchi1.hujum("Goblin")
oyinchi1.hujum("Ork")
oyinchi1.hujum("Dragon")
oyinchi1.hujum("Boss")
oyinchi1.daraja_oshirish()
oyinchi1.uskuna_sotib_olish("Qilich", 50)
oyinchi1.ma_lumot_ko_rsatish()
Vaqt: 10 daqiqa โฐ
Vaqt: 10 daqiqa โฐ
Object bilan ishlaydi, self parametrini oladi
Class bilan ishlaydi, @classmethod dekoratori
Mustaqil ishlaydi, @staticmethod dekoratori
Objectning o'zini bildiradi, avtomatik uzatiladi
Keyingi dars: Inheritance (Meros) mavzusini o'rganamiz
Savollaringiz bo'lsa, yozib qoldiring! ๐
Ularni yaxshi o'rganing va professional dasturchi bo'ling! ๐
Keyingi darsda Inheritance (Meros) haqida o'rganamiz