Il parametro self
Fa parte della sezione Programmazione orientata agli oggetti del percorso Python di Coddy. Lezione 4 di 64.
Il parametro self fa riferimento all'istanza di una classe all'interno dei metodi. Ti consente di accedere agli attributi dell'oggetto corrente e di modificarli.
Ecco un esempio di una classe con metodi che usano self:
class Car:
def honk(self):
print("Beep beep!")
def describe(self):
print(f"I am a {self.color} {self.model}")Il parametro self deve sempre essere il primo parametro nelle definizioni dei metodi. Indica al metodo quale oggetto specifico viene utilizzato.
Crea un oggetto auto e aggiungi attributi:
my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"Ora chiama i metodi:
my_car.honk()
my_car.describe()Output:
Beep beep!
I am a Red SedanNota che quando chiami my_car.describe(), non passi nulla per self: Python passa automaticamente my_car come parametro self.
Ecco cosa succede dietro le quinte:
# Quando scrivi questo:
my_car.describe()
# Python in realtà fa questo:
Car.describe(my_car)Il parametro self consente a ogni oggetto di accedere ai propri dati. Senza self, i metodi non saprebbero quali attributi dell'oggetto usare.
Punto chiave: includi sempre self come primo parametro nelle definizioni dei metodi, ma non passarlo mai quando chiami i metodi: Python lo gestisce automaticamente.
Sfida
FacileCompleta la classe Car in car.py aggiungendo un metodo chiamato display_info che utilizzi il parametro self per stampare l'anno, la marca e il modello dell'auto nel formato:
"This car is a [year] [make] [model]".
car.py: contiene la definizione della classeCar, in cui aggiungerai il metododisplay_infodriver.py: file di esecuzione principale che importa e utilizza la classeCar
Il file driver.py importerà la tua classe Car e creerà delle istanze per testare la tua implementazione. Assicurati che il metodo funzioni correttamente quando viene chiamato dal file driver.
Provalo tu
from car import Car
# Metti alla prova il tuo codice
my_car = Car()
my_car.year = 2020
my_car.make = "Toyota"
my_car.model = "Corolla"
my_car.display_info() # Dovrebbe stampare: This car is a 2020 Toyota CorollaQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti di OOP
File esterniIntroduzione a OOPClassi vs. oggettiIl parametro selfMetodiAttributiMetodo costruttore (__init__)Riepilogo - Calcolatrice semplice4Ereditarietà
Ereditarietà di baseLa funzione super()Sovrascrittura dei metodiEreditarietà multiplaOrdine di risoluzione dei metodiRiepilogo - Gerarchia dei dipendenti7Metodi speciali
Introduzione ai metodi magiciSovraccarico degli operatoriMetodi magici dei contenitoriRiepilogo - Lista personalizzata10Modelli di progettazione Parte 1
Introduzione ai modelli di progettazioneModello SingletonModello FactoryModello ObserverModello Strategy2Decoratori
Introduzione ai decoratoriDecoratore di proprietàDecoratore di metodo staticoDecoratore di metodo di classe5Polimorfismo
Ripasso dell'override dei metodiDuck typingClassi e metodi astrattiProgettazione delle interfacceRiepilogo - Calcolatore di forme8Concetti avanzati di OOP
Composizione vs ereditarietàMixinMetodi statici e di classeDecorator di classeContext manager11Pattern di progettazione - Parte 2
Pattern dei comandiPattern adattatorePattern decoratorePattern metodo templatePattern statoPattern composito3Proprietà delle classi
Variabili di istanza e di classeDecorator delle proprietàAttributi privatiRiepilogo - Gestore di conti bancari6Incapsulamento
Membri pubblici, protetti e privatiModificatori di accessoOccultamento delle informazioniDecorator delle proprietà: avanzatiRipasso - Sistema di registri degli studenti12Progetto: Gestione della biblioteca
Panoramica del progettoClassi Libro e UtenteSistema di prestitoFunzionalità di ricercaInterfaccia amministratoreTest e integrazioneEsercitati da solo: Compilatore Python online