Sobes.tech
Junior — Middle

განმარტეთ განსხვავებები self და cls შორის კლასის მეთოდების კონტექსტში

sobes.tech AI

პასუხი AI-სგან

პითონში 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()  # კლასის მეთოდის გამოძახება