Sobes.tech
Junior — Middle

Vysvětlete rozdíly mezi self a cls v kontextu metod třídy

sobes.tech AI

Odpověď od AI

V Pythonu jsou self a cls konvence pro první parametr metod, ale mají odlišný účel:

  • self je odkaz na konkrétní instanci třídy. Používá se v běžných metodách instance k přístupu k atributům a metodám tohoto objektu.
  • cls je odkaz na samotnou třídu, nikoliv na její instanci. Používá se v třídních metodách (označených dekorátorem @classmethod) k práci s třídou jako celkem, například k vytváření nových instancí nebo ke změně vlastností třídy.

Příklad:

class MyClass:
    class_var = 0

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

    def instance_method(self):
        print(f'Proměnná instance: {self.instance_var}')

    @classmethod
    def class_method(cls):
        print(f'Proměnná třídy: {cls.class_var}')

obj = MyClass(10)
obj.instance_method()  # volání metody instance
MyClass.class_method()  # volání třídy