Sobes.tech
Junior — Middle

Vysvetlite rozdiely medzi self a cls v kontexte metódov triedy

sobes.tech AI

Odpoveď od AI

V Pythone sú self a cls konvencie pre prvý parameter metód, ale majú odlišný účel:

  • self je odkaz na konkrétny príklad triedy. Používa sa v bežných metódach inštancie na prístup k atribútom a metódam tohto objektu.
  • cls je odkaz na samotnú triedu, nie na jej príklad. Používa sa v triednych metódach (označených dekorátorom @classmethod) na prácu s triedou ako celkom, napríklad na vytváranie nových príkladov alebo na zmenu vlastností triedy.

Príklad:

class MyClass:
    class_var = 0

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

    def instance_method(self):
        print(f'Premenná inštancie: {self.instance_var}')

    @classmethod
    def class_method(cls):
        print(f'Premenná triedy: {cls.class_var}')

obj = MyClass(10)
obj.instance_method()  # volanie metódy inštancie
MyClass.class_method()  # volanie metódy triedy