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