Metodi statici e di classe

Lambda functions

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/y

Un metodo statico può essere anche invocato dalle istanze della classe.

python_book8