Sobes.tech
Junior — Middle

Wat is het verschil tussen het gebruik van methoden die als static en class zijn gedeclareerd in Python?

sobes.tech AI

Antwoord van AI

In Python verschillen de methoden die als @staticmethod en @classmethod worden gedeclareerd in de manier waarop ze toegang krijgen tot de gegevens van de klasse en het exemplaar:

  • @staticmethod — is een methode die automatisch geen verwijzing ontvangt naar het exemplaar (self) of de klasse (cls). Het gedraagt zich als een gewone functie, maar bevindt zich binnen de klasse voor logische groepering. Het kan de toestand van de klasse of het exemplaar niet wijzigen.

  • @classmethod — is een methode die als eerste argument de klasse zelf (cls) ontvangt, in plaats van een exemplaar. Het stelt je in staat om met klasse-attributen te werken, alternatieve constructors te maken en de toestand van de klasse te wijzigen.

Voorbeeld:

class MyClass:
    count = 0

    @staticmethod
    def greet():
        print("Hallo!")

    @classmethod
    def increment_count(cls):
        cls.count += 1

MyClass.greet()          # Zal afdrukken: Hallo!
MyClass.increment_count()
print(MyClass.count)     # Zal afdrukken: 1

Dus, staticmethod is gewoon een functie binnen de klasse, en classmethod is een methode die met de klasse zelf werkt.