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 və @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.