Junior — Middle
Тафовут дар истифодаи усулҳое, ки ҳамчун static ва class эълон шудаанд, дар Python чист?
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 — усулест, ки бо худи синф кор мекунад.