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.