Menu
Coddy logo textTech

Variabili di istanza e di classe

Fa parte della sezione Programmazione orientata agli oggetti del percorso Python di Coddy. Lezione 13 di 64.

Le variabili di istanza sono uniche per ogni oggetto, mentre le variabili di classe sono condivise da tutti gli oggetti della stessa classe.

Ecco un esempio di una classe con entrambi i tipi di variabili

class Student:
    # Variabile di classe - condivisa da tutte le istanze
    school = "Python High School"
    
    def __init__(self, name, grade):
        # Variabili di istanza - specifiche di ogni studente
        self.name = name
        self.grade = grade

Crea oggetti student:

alice = Student("Alice", "A")
bob = Student("Bob", "B")

Accedi alle variabili di istanza (uniche per ciascun oggetto):

print(alice.name)  # Alice
print(bob.name)    # Bob
print(alice.grade) # A
print(bob.grade)   # B

Accedi alle variabili di classe (condivise da tutti gli oggetti):

print(alice.school)     # Python High School
print(bob.school)       # Python High School
print(Student.school)   # Python High School

Ora modifica la variabile della classe:

Student.school = "Python Academy"

Controlla in che modo la modifica influisce su tutte le istanze:

print(alice.school)   # Python Academy
print(bob.school)     # Python Academy

Output:

Alice
Bob
A
B
Python High School
Python High School
Python High School
Python Academy
Python Academy

Puoi anche creare variabili di istanza dopo la creazione dell’oggetto:

alice.age = 16  # Questo crea una variabile di istanza
print(alice.age)  # 16
# print(bob.age)  # Questo causerebbe un errore: bob non ha age

Differenza fondamentale: le variabili di istanza (create con self.variable_name) sono specifiche di ogni oggetto, mentre le variabili di classe (definite direttamente nella classe) sono condivise da tutti gli oggetti. Modificare una variabile di classe influisce su tutte le istanze.

challenge icon

Sfida

Facile

Completa un sistema bancario.. Definirai una classe BankAccount in un file e la userai in un altro.

Lavorerai con:

  • bank_account.py: definisci la classe BankAccount con attributi e metodi
  • driver.py: importa la classe, crea account e mostra le variabili di classe

Segui i commenti TODO in entrambi i file per le istruzioni dettagliate. I commenti ti guideranno nella creazione della classe con variabili e metodi appropriati e nel mostrare come le variabili di classe influiscono su tutte le istanze.

Provalo tu

# TODO: Importa la classe BankAccount da bank_account.py
from bank_account import BankAccount

# TODO: Crea due conti con questi dettagli esatti:
# - account1: titolare "Alice Smith" con un saldo di $1000
# - account2: titolare "Bob Jones" con un saldo di $2000

# TODO: Chiama display_info() per entrambi i conti

# TODO: Modifica la variabile di classe interest_rate impostandola a 0.03 (3%)
# Usa questo formato: BankAccount.interest_rate = 0.03

# TODO: Stampa il testo "After interest rate change:"

# TODO: Chiama di nuovo display_info() per entrambi i conti per mostrare che entrambi hanno il nuovo tasso di interesse
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Python online