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 պարզապես ֆունկցիա է դասի ներսում, որը կախված չէ դասից կամ օրինակից։