Metodi statici e di classe
Un metodo di classe è un metodo che è legato ad una classe, ma non alle istanze della stessa. Un metodo statico non è legato nè alla classe, nè alle istanze.
Metodo di classe
Un metodo di classe, dal momento che la classe è bounded come parametro, può essere utilizzato come init alternativo, ovvero come factory (creare oggetti senza passare direttamente per init).
class User:
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def createFromYear(cls, name, year):
return cls(name, date.today().year-year)
# questo si può inizializzare così
gianni = User("Gianni", 23)
# oppure
lorenzo = User.createFromYear("Lorenzo", 2020)Metodo statico
I metodi statici sono tutti di tipo unbounded.
class numbers:
@staticmethod
def sum(x, y):
return x+y
@staticmethod
def divide(x, y):
return x/yUn metodo statico può essere anche invocato dalle istanze della classe.