Sobes.tech
Junior — Middle

Magyarázza el a különbségeket a self és a cls között a osztálymetódusok kontextusában

sobes.tech MI

Válasz az MI-től

Pythonban a self és a cls konvenciók a metódusok első paraméterére vonatkoznak, de különböző célt szolgálnak:

  • self egy adott példányra utal a osztályból. Általában az példány metódusokban használják, hogy hozzáférjenek az objektum attribútumaihoz és metódusaihoz.
  • cls az osztályra utal, nem a példányra. Az osztálymetódusokban (@classmethod dekorátorral jelölve) használják, hogy az osztállyal általánosan dolgozzanak, például új példányokat hozzanak létre vagy az osztály tulajdonságait módosítsák.

Példa:

class MyClass:
    class_var = 0

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

    def instance_method(self):
        print(f'Példány változó: {self.instance_var}')

    @classmethod
    def class_method(cls):
        print(f'Osztály változó: {cls.class_var}')

obj = MyClass(10)
obj.instance_method()  # példány metódus hívása
MyClass.class_method()  # osztály metódus hívása