Sobes.tech
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 — усулест, ки бо худи синф кор мекунад.