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:
selfje 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.clsje 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