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