Sobes.tech
Junior — Middle

Izskaidrojiet atšķirības starp self un cls klases metožu kontekstā

sobes.tech AI

Atbilde no AI

Pythonā self un cls ir konvencijas pirmajam metodes parametram, bet tiem ir dažādi mērķi:

  • self ir atsauce uz konkrētu klases piemēru. To izmanto parastajās piemēra metodēs, lai piekļūtu šī objekta atribūtiem un metodēm.
  • cls ir atsauce uz pašu klasi, nevis uz tās piemēru. To izmanto klases metodēs (@classmethod dekorators), lai strādātu ar visu klasi, piemēram, izveidotu jaunus piemērus vai mainītu klases īpašības.

Piemērs:

class MyClass:
    class_var = 0

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

    def instance_method(self):
        print(f'Piemēra mainīgais: {self.instance_var}')

    @classmethod
    def class_method(cls):
        print(f'Klases mainīgais: {cls.class_var}')

obj = MyClass(10)
obj.instance_method()  # izsauc piemēra metodi
MyClass.class_method()  # izsauc klases metodi