Sobes.tech
Junior — Middle

Python-da static və class kimi elan olunan metodların istifadəsi arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Python-da, @staticmethod@classmethod kimi elan olunan metodlar, sinif və nümunə məlumatlarına giriş üsullarında fərqlənir:

  • @staticmethod — avtomatik olaraq nümunə (self) və ya sinif (cls) istinadını almayan metoddur. O, adi bir funksiya kimi davranır, lakin məntiqi qruplaşdırma üçün sinif daxilində yerləşir. Sinif və ya nümunənin vəziyyətini dəyişə bilməz.

  • @classmethod — ilk arqument kimi sinifin özünü (cls) alan metoddur, nümunə deyil. Sinif atributları ilə işləməyə, alternativ konstruktorlar yaratmağa və sinif vəziyyətini dəyişməyə imkan verir.

Misal:

class MyClass:
    count = 0

    @staticmethod
    def greet():
        print("Salam!")

    @classmethod
    def increment_count(cls):
        cls.count += 1

MyClass.greet()          # Çap edəcək: Salam!
MyClass.increment_count()
print(MyClass.count)     # Çap edəcək: 1

Beləliklə, staticmethod sadəcə sinif daxilindəki funksiya, classmethod isə siniflə işləyən metoddur.