Implementazione di concetti orientati agli oggetti
In questo capitolo, ci concentreremo sui modelli che utilizzano concetti orientati agli oggetti e la loro implementazione in Python. Quando progettiamo i nostri programmi attorno a blocchi di istruzioni, che manipolano i dati attorno alle funzioni, si parla di programmazione orientata alle procedure. Nella programmazione orientata agli oggetti, ci sono due istanze principali chiamate classi e oggetti.
Come implementare classi e variabili oggetto?
L'implementazione di classi e variabili oggetto è la seguente:
class Robot:
   population = 0
   
   def __init__(self, name):
      self.name = name
      print("(Initializing {})".format(self.name))
      Robot.population += 1
   
   def die(self):
      print("{} is being destroyed!".format(self.name))
      Robot.population -= 1
      if Robot.population == 0:
         print("{} was the last one.".format(self.name))
      else:
         print("There are still {:d} robots working.".format(
            Robot.population))
   
   def say_hi(self):
      print("Greetings, my masters call me {}.".format(self.name))
   
   @classmethod
   def how_many(cls):
      print("We have {:d} robots.".format(cls.population))
droid1 = Robot("R2-D2")
droid1.say_hi()
Robot.how_many()
droid2 = Robot("C-3PO")
droid2.say_hi()
Robot.how_many()
print("\nRobots can do some work here.\n")
print("Robots have finished their work. So let's destroy them.")
droid1.die()
droid2.die()
Robot.how_many() 
    Produzione
Il programma di cui sopra genera il seguente output:
 
    Spiegazione
Questa illustrazione aiuta a dimostrare la natura delle variabili di classe e oggetto.
"Popolazione" appartiene alla classe "Robot". Quindi, viene indicato come una variabile di classe o un oggetto.
Qui, ci riferiamo alla variabile della classe di popolazione come Robot.population e non come self.population.
