Le classi di Python sono strutture che fungono da modello o prototipo per la creazione di oggetti. Possono essere uti­liz­za­te per scrivere codice riu­ti­liz­za­bi­le sotto forma di attributi e metodi.

Cosa sono le classi di Python?

Una classe è un concetto astratto che definisce gli attributi e i metodi che un oggetto può avere. Le classi di Python servono come modello per la creazione di oggetti concreti che svolgono il ruolo di istanze di questa classe. Per fare un esempio concreto, una classe può chiamarsi Automobile, avere come attributi il colore e la casa pro­dut­tri­ce e come metodi __guidare__ e __frenare__.

Ogni oggetto di una classe può avere valori propri per quanto riguarda gli attributi, ma condivide i metodi e il quadro com­por­ta­men­ta­le di base con altre istanze della stessa classe. Ad esempio, possiamo creare l’oggetto mia_auto all’interno della classe auto e dargli come attributi il colore __rosso__ e la casa pro­dut­tri­ce __Toyota__. I metodi __guidare__ e __frenare__ della classe vengono au­to­ma­ti­ca­men­te tra­sfe­ri­ti all’istanza.

Come creare classi in Python

In Python le classi si de­fi­ni­sco­no uti­liz­zan­do la parola chiave class.

lass MyClass:
    # Constructor method called when creating an object
    def __init__(self, attribute1, attribute2):
        self.attribute1 = attribute1
        self.attribute2 = attribute2
    
    # Method defined within the class
    def my_method(self):
        return f"Attribute 1: {self.attribute1}, Attribute 2: {self.attribute2}"
python

In questo codice Python, stiamo creando una classe chiamata MyClass. Questa ha un co­strut­to­re __init__ che viene ri­chia­ma­to al momento della creazione di un oggetto e ini­zia­liz­za due attributi, attribute1 e attribute2. Il metodo my_method re­sti­tui­sce una stringa for­mat­ta­ta con­te­nen­te i valori di questi attributi.

Per derivare un oggetto da questa classe, occorre uti­liz­za­re il nome della classe seguito da parentesi:

object1 = MyClass("Value 1", "Value 2")
# Calling a method of the object
result = object1.my_method()
python
Web Hosting
Diventa il n°1 della rete con il provider di hosting n°1 in Europa
  • Di­spo­ni­bi­li­tà garantita al 99,99%
  • Dominio, SSL ed e-mail inclusi
  • As­si­sten­za 24/7 in lingua italiana

Esempi di utilizzo delle classi in Python

Le classi di Python possono creare sistemi complessi e relazioni tra entità diverse. Di seguito ti pre­sen­tia­mo alcuni modi per lavorare con le classi in Python.

La funzione __str()__

La funzione __str__() è un metodo speciale che può essere definito all’interno delle classi di Python. Quando viene im­ple­men­ta­ta, re­sti­tui­sce una stringa che rap­pre­sen­ta una rap­pre­sen­ta­zio­ne user-friendly di un oggetto. Puoi uti­liz­za­re la funzione str() di­ret­ta­men­te sull’oggetto o com­bi­nar­la con un’istru­zio­ne print().

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __str__(self):
        return f"Name: {self.name}, Age: {self.age}"
person1 = Person("Alice", 30)
print(person1) # Output: Name: Alice, Age: 30
python

Nel nostro codice, il metodo __str__() della classe person crea una stringa for­mat­ta­ta con­te­nen­te il nome e l’età di una persona. Eseguendo la funzione print(person1), viene au­to­ma­ti­ca­men­te ri­chia­ma­to il metodo __str__() dell’oggetto person1 e viene generata la stringa re­sti­tui­ta da questo metodo.

Definire i metodi nelle classi di Python

In Python, hai la pos­si­bi­li­tà di definire metodi all’interno di una classe per eseguire ope­ra­zio­ni sugli oggetti da essa contenuti. Questi metodi possono poi essere ri­chia­ma­ti dagli oggetti creati.

class Rectangle:
    def __init__(self, length, width):
        self.length = length
        self.width = width
    
    def area(self):
        return self.length * self.width
    def perimeter(self):
        return 2 * (self.length + self.width)
# Creating an object of the class
my_rectangle = Rectangle(5, 10)
# Calling methods of the object
area = my_rectangle.area()
perimeter = my_rectangle.perimeter()
# Printing the calculated values
print("Area =", area) # Output: Area = 50
print("Perimeter =", perimeter) # Output: Perimeter = 30
python

Nell’esempio, creiamo la classe Rectangle, che include i due metodi area() e perimeter(). Questi vengono uti­liz­za­ti per calcolare l’area e il perimetro di un ret­tan­go­lo in base ai valori di lunghezza e larghezza forniti al momento dell’ini­zia­liz­za­zio­ne dell’oggetto. Nel lin­guag­gio Python, self all’interno di un metodo di una classe rap­pre­sen­ta un ri­fe­ri­men­to all’oggetto corrente a cui il metodo viene applicato.

Dopo aver creato l’oggetto my_rectangle con una lunghezza di 5 e una larghezza di 10, ri­chia­mia­mo i metodi area() e perimeter() su questo oggetto per calcolare i valori cor­ri­spon­den­ti.

Mo­di­fi­ca­re le proprietà degli oggetti

L’operatore punto . può essere uti­liz­za­to per accedere agli attributi specifici dell’oggetto e ag­gior­nar­ne i valori. È possibile assegnare nuovi valori di­ret­ta­men­te all’attributo.

person1.name = "Sarah"
person1.age = 35
python

La parola chiave del consente di can­cel­la­re le proprietà di un oggetto.

del person1.name
python
N.B.

Ricorda che le variabili di istanza sono diverse dalle variabili di classe in Python. Le variabili di classe sono definite fuori dal co­strut­to­re e possono essere mo­di­fi­ca­te solo tramite il nome della classe.

Vai al menu prin­ci­pa­le