Junior — Middle
Чӣ гуна фарқият доранд classmethod ва staticmethod дар Python?
sobes.tech AI
Ҷавоб аз AI
classmethod ва staticmethod — ин ду намуди усулҳо дар Python, ки дар онҳо дар бораи чӣ гуна дастрасӣ ба синф ва маълумоти он фарқ мекунанд.
-
@classmethod — усул, ки аввалин аргументи он худи синф (
cls) мегирад, на намуна. Ин имкон медиҳад, ки усул бо синф кор кунад, ҳолати онро тағир диҳад ё намунаҳои нав эҷод кунад. -
@staticmethod — усул, ки автоматӣ на намуна (
self) ва на синф (cls) мегирад. Ин як функсияи оддӣ аст, ки бо синф мантиқӣ алоқаманд аст, аммо аз ҳолати он вобаста нест.
Масалан:
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()) # Миқдори объектҳои эҷодшударо нишон медиҳад
print(MyClass.greet('Alice')) # Паёми саломро нишон медиҳад
Хулоса:
classmethodметавонад ҳолати синфро тағир диҳад ё истифода барад.staticmethodтанҳо функсияи дар дохили синф аст, ки аз синф ё намуна вобаста нест.