AD

Accesso agli attributi e metodi degli oggetti in Python

Comprendere come accedere agli attributi e metodi degli oggetti in Python è fondamentale per sfruttare al meglio le potenzialità della programmazione orientata agli oggetti. Questa guida esplorerà in dettaglio come definire, accedere e manipolare attributi e metodi degli oggetti in Python.

Oggetto in Python

Un oggetto in Python è una singola istanza di una classe che incapsula dati (attributi) e comportamenti (metodi). Gli oggetti permettono di rappresentare entità reali e astratte all'interno del codice in modo modulare e riutilizzabile.

Definizione di attributi e metodi

Per creare una classe in Python, si utilizza la parola chiave class seguita dal nome della classe e due punti. Ecco un esempio di una semplice classe Persona:

class Persona: def init(self, nome, età): self.nome = nome self.età = età def saluta(self): return f"Ciao, mi chiamo {self.nome} e ho {self.età} anni."

Gli attributi di istanza sono specifici di ciascuna istanza di una classe e vengono definiti all'interno del metodo init.

Mentre, gli attributi di classe sono condivisi tra tutte le istanze di una classe e vengono definiti direttamente all'interno della classe.

class Persona: specie = "Homo sapiens"  # Attributo di classe def init(self, nome, età): self.nome = nome self.età = età  # Attributo di istanza

I metodi di istanza sono funzioni definite all'interno di una classe che operano sugli attributi di istanza. Devono avere self come primo parametro.

Mentre, i metodi di classe utilizzano il decoratore @classmethod e ricevono la classe come primo parametro, convenzionalmente chiamato cls.

class Persona: specie = "Homo sapiens" def init(self, nome, età): self.nome = nome self.età = età @classmethod def descrizione(cls): return f"Tutti gli esseri umani appartengono alla specie {cls.specie}."

I metodi statici utilizzano il decoratore @staticmethod e non ricevono né la classe né l'istanza come parametro. Sono utili per funzioni che non dipendono né dagli attributi di istanza né da quelli di classe.

class Persona: @staticmethod def info_generale(): return "Gli esseri umani hanno bisogno di cibo e acqua per sopravvivere."

Accesso agli attributi degli oggetti

Per accedere agli attributi di istanza di un oggetto, si utilizza la notazione punto (.) seguita dal nome dell'attributo.

persona1 = Persona("Luca", 30) print(persona1.nome)  # Output: Luca print(persona1.età)   # Output: 30

Gli attributi di istanza possono essere modificati direttamente utilizzando la notazione punto.

persona1.nome = "Marco" print(persona1.nome)  # Output: Marco

Gli attributi di classe possono essere accessi tramite la classe stessa o tramite un'istanza.

print(Persona.specie)  # Output: Homo sapiens print(persona1.specie)  # Output: Homo sapiens

Accesso ai metodi degli oggetti

I metodi di istanza vengono chiamati utilizzando la notazione punto seguita dal nome del metodo con le parentesi.

print(persona1.saluta())  # Output: Ciao, mi chiamo Marco e ho 30 anni.

I metodi di classe vengono chiamati utilizzando la notazione punto sulla classe stessa o su un'istanza.

print(Persona.descrizione())  # Output: Tutti gli esseri umani appartengono alla specie Homo sapiens. print(persona1.descrizione())  # Output: Tutti gli esseri umani appartengono alla specie Homo sapiens.

I metodi statici vengono chiamati utilizzando la notazione punto sulla classe stessa o su un'istanza.

print(Persona.info_generale())  # Output: Gli esseri umani hanno bisogno di cibo e acqua per sopravvivere. print(persona1.info_generale())  # Output: Gli esseri umani hanno bisogno di cibo e acqua per sopravvivere.

Incapsulamento e accesso agli attributi privati

L'incapsulamento è una caratteristica dell'OOP che permette di nascondere i dettagli interni di un oggetto. In Python, si possono definire attributi privati utilizzando un doppio underscore (__) come prefisso.

Per accedere agli attributi privati, si utilizzano metodi di accesso specifici, noti anche come getter e setter.

I metodi getter e setter permettono di accedere e modificare gli attributi privati rispettivamente.

class ContoBancario: def init(self, saldo_iniziale): self.__saldo = saldo_iniziale def deposita(self, importo): self.__saldo += importo def preleva(self, importo): if importo <= self.__saldo: self.__saldo -= importo else: print("Saldo insufficiente") def get_saldo(self): return self.__saldo def set_saldo(self, saldo): if saldo >= 0: self.__saldo = saldo else: print("Il saldo non può essere negativo")

Conclusione

Comprendere come accedere e manipolare gli attributi e i metodi degli oggetti in Python è fondamentale per diventare un programmatore efficace. Questo include la conoscenza di attributi di istanza e di classe, metodi di istanza, di classe e statici, nonché le tecniche di incapsulamento e ereditarietà.