Anatomia di una classe: attributi e metodi

Programmazione orientata agli oggetti in Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Una classe base

class Customer:

# il codice per la classe va qui
pass
  • class <name>: inizia una definizione di classe
  • il codice all'interno di class è indentato
  • usa pass per creare una classe "vuota"
c1 = Customer()
c2 = Customer()
  • usa ClassName() per creare un oggetto della classe ClassName
Programmazione orientata agli oggetti in Python

Aggiungi metodi a una classe

class Customer:  

    def identify(self, name):   
      print("Sono il Cliente " + name)
  • definizione di metodo = definizione di funzione all'interno della classe
  • usa self come 1° argomento nella definizione del metodo
cust = Customer()
cust.identify("Laura")
Sono il Cliente Laura
  • ignora self quando chiami un metodo su un oggetto
Programmazione orientata agli oggetti in Python
class Customer:  

    def identify(self, name):   
      print("Sono il Cliente " + name)

cust = Customer()
cust.identify("Laura")

Cos'è self?

  • le classi sono modelli, come riferirsi ai dati di un oggetto specifico?
  • self è un segnaposto per un oggetto specifico usato nella definizione della classe
  • dovrebbe essere il primo argomento di ogni metodo
  • Python gestirà self quando il metodo è chiamato da un oggetto:

cust.identify("Laura") sarà interpretato come Customer.identify(cust, "Laura")

Programmazione orientata agli oggetti in Python

Abbiamo bisogno di attributi

  • Incapsulamento: raggruppare dati con metodi che operano sui dati
  • Es. il nome di Customer dovrebbe essere un attributo

  $$\text{\Large{Gli attributi sono creati tramite assegnazione (=) nei metodi}}$$

Programmazione orientata agli oggetti in Python

Aggiungi un attributo alla classe

class Customer:  
    # imposta l'attributo nome di un oggetto su new_name
    def set_name(self, new_name):

# Crea un attributo assegnando un valore self.name = new_name # <-- creerà .name quando set_name è chiamato
cust = Customer()                   # <--.name non esiste ancora qui

cust.set_name("Lara de Silva") # <--.name è creato e impostato su "Lara de Silva"
print(cust.name) # <--.name può essere usato
Lara de Silva
Programmazione orientata agli oggetti in Python

Versione vecchia

class Customer:  



    # Usando un parametro
    def identify(self, name):   
      print("Sono il Cliente" + name)
cust = Customer()

cust.identify("Eris Odoro")
Sono il Cliente Eris Odoro

Versione nuova

class Customer:  
   def set_name(self, new_name): 
      self.name = new_name

    # Usando .name dall'oggetto stesso
    def identify(self):     
      print("Sono il Cliente" + self.name)
cust = Customer()
cust.set_name("Rashid Volkov")
cust.identify()
Sono il Cliente Rashid Volkov
Programmazione orientata agli oggetti in Python

Facciamo pratica!

Programmazione orientata agli oggetti in Python

Preparing Video For Download...