Junior — Middle
Python'da classmethod va staticmethod qanday farq qiladi?
sobes.tech AI
AIdan javob
classmethod va staticmethod Python'da ikki turdagi metodlar bo'lib, ular sinf va uning ma'lumotlariga qanday kirishlariga qarab farq qiladi.
-
@classmethod — birinchi argument sifatida o'z sinfini (
cls) oladigan metod. Bu metodga sinf bilan ishlash, uning holatini o'zgartirish yoki yangi nusxalar yaratish imkonini beradi. -
@staticmethod — avtomatik ravishda na nusxa (
self) na sinf (cls) oladigan metod. Bu oddiy funksiya bo'lib, sinf bilan mantiqan bog'liq, ammo uning holatiga bog'liq emas.
Misol:
class MyClass:
count = 0
def __init__(self):
MyClass.count += 1
@classmethod
def get_count(cls):
return cls.count
@staticmethod
def greet(name):
return f"Hello, {name}!"
obj = MyClass()
print(MyClass.get_count()) # Yaratilgan obyektlar sonini ko'rsatadi
print(MyClass.greet('Alice')) # Salomlashishni ko'rsatadi
Xulosa:
classmethodsinf holatini o'zgartirish yoki undan foydalanish mumkin.staticmethodsinf yoki nusxa bilan bog'liq bo'lmagan oddiy funksiya.