Sobes.tech
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:

  • classmethod sinf holatini o'zgartirish yoki undan foydalanish mumkin.
  • staticmethod sinf yoki nusxa bilan bog'liq bo'lmagan oddiy funksiya.