Ի՞նչ տարբերություն կա Python-ում static և class մեթոդների օգտագործման միջև։
sobes.tech AI
Պատասխան AI-ից
Python-ում, մեթոդները, որոնք հայտարարված են որպես @staticmethod և @classmethod, տարբեր են այն կերպով, թե ինչպես են նրանք մուտք գործում դասի և օրինակակի տվյալներին:
-
@staticmethod — դա մեթոդ է, որը ավտոմատ կերպով չի ստանում հղում ոչ օրինակակի (
self), ոչ էլ դասի (cls). Այն պահվում է որպես սովորական ֆունկցիա, բայց գտնվում է դասի ներսում տրամաբանական խմբավորման համար: Նա չի կարող փոխել դասի կամ օրինակակի վիճակը: -
@classmethod — դա մեթոդ է, որը որպես առաջին արգումենտ ստանում է հենց դասը (
cls), ոչ թե օրինակակը: Դա թույլ է տալիս աշխատել դասի հատկությունների հետ, ստեղծել այլընտրանքային կոնստրուկտորներ և փոխել դասի վիճակը:
Օրինակ:
class MyClass:
count = 0
@staticmethod
def greet():
print("Բարև!")
@classmethod
def increment_count(cls):
cls.count += 1
MyClass.greet() # Տպել է: Բարև!
MyClass.increment_count()
print(MyClass.count) # Տպել է: 1
Այսպիսով, staticmethod պարզապես ֆունկցիա է դասի ներսում, իսկ classmethod — մեթոդ, որը աշխատում է հենց դասի հետ։