Sobes.tech
Junior — Middle

Ներկայացրեք տարբերությունները self և cls-ի միջև դասի մեթոդների կոնտեքստում

sobes.tech AI

Պատասխան AI-ից

Python-ում self և cls-ը կոնվենցիաներ են մեթոդների առաջին պարամետրի համար, բայց ունեն տարբեր նպատակներ.

  • self հղում է կոնկրետ օրինակին։ Օգտագործվում է սովորական օրինակային մեթոդներում՝ հասնելու այդ օբյեկտի հատկություններին և մեթոդներին:
  • cls հղում է հենց դասին, ոչ թե նրա օրինակին։ Օգտագործվում է դասային մեթոդներում (@classmethod դեկորատորով նշված), որպեսզի աշխատի ամբողջ դասի հետ՝ օրինակ, նոր օրինակներ ստեղծելու կամ դասի հատկությունները փոխելու համար:

Օրինակ՝

class MyClass:
    class_var = 0

    def __init__(self, value):
        self.instance_var = value

    def instance_method(self):
        print(f'Օբյեկտի փոփոխականը: {self.instance_var}')

    @classmethod
    def class_method(cls):
        print(f'Դասի փոփոխականը: {cls.class_var}')

obj = MyClass(10)
obj.instance_method()  # կանչում է օբյեկտի մեթոդը
MyClass.class_method()  # կանչում է դասի մեթոդը