Lezioni di Python – 7.6 Metodi di classe e metodi statici

Python lessons - 7.6 Metodi di classe e metodi statici

Metodi di Classe

I metodi degli oggetti che abbiamo visto finora vengono chiamati attraverso il nome dell’istanza della classe (oggetto) , che viene passato come parametro self all’interno del metodo.

I metodi di classe sono diversi. Questi metodi vengono chiamati direttamente dalla classe che viene passata come parametro cls all’interno del metodo. I metodi di classe vengono marcati con un decoratore @classmethod. Generalmente questi metodi servono per istanziare una nuova istanza di classe, passando dei parametri diversi rispetto a quelli richiesti dal costruttore.

class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def calculate_area(self):
return self.width * self.height@classmethod
def new_square(cls, side_length):
return cls(side_length, side_length)square = Rectangle.new_square(5)
print(square.calculate_area())

eseguendo

>>>
25

Come possiamo vedere abbiamo utilizzato il metodo di classe per creare una nuova istanza utilizzando un solo parametro (lato) invece che i due richiesti dal costruttore (lunghezza, altezza)

Metodi Statici

I metodi statici sono molto simili ai metodi di classe. Si riconoscono per il fatto che hanno un decoratore @staticmethod prima della definizione.

class Pizza:
def __init__(self, toppings):
self.toppings = toppings
@staticmethod
def validate_topping(topping):
if topping == “pineapple”:
raise ValueError(“No pineapple”)
else:
return Trueingredients = [“cheese”,”onions”,”tomato”]
if all(Pizza.validate_topping(i) for i in ingredients):
Pizza = Pizza(ingredients)

Dall’esempio di sopra vediamo un possibile uso, come metodo di validazione con un controllo sugli argomenti prima di istanziare un nuovo oggetto della classe.

⇐Vai a Lezione 7.5 – Data Hiding

Vai a Lezione 7.7 – Le properties ⇒

Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.