Creato da pastuweb.com
Share My Page
My Social Accounts
Account FaceBook Account LinkedIn Account Twitter Account Google Plus Account Git Hub

Per creare una classe usare la parola chiave class:

 
Esempio:
class Cibo: #creiamo la classe
pass
 
pasta = Cibo() #creiamo un istanza della classe
 
Definizione di metodi
Esempio:
class Cibo:
"Un esempio di classe per gestire i cibi"
def __init__(self,proteine=0,carboidrati=0, grassi=0):
    self.proteine = proteine
    self.carboidrati = carboidrati
    self.grassi = grassi
 
La prima stringa, è la stringa di documentazione.
Il metodo __init__ è il metodo costruttore.
"self" permette di accedere all'oggetto creato o che si sta per creare.
 
Creiamo un istanza:
pasta = Cibo(proteine=12, carboidrati=72, grassi=1)
print pasta.carboidrati
72
 
Aggiungiamo un metodo:
def calcolaCalorie(self):
    return self.proteine * 4 + self.carboidrati * 4 + self.grassi * 9)
 
Cibo.Calorie = calcolaCalorie #assegno la funzione precedentemente chiamata ad una variabile chiamata "Calorie", MOLTO UTILE
 
Chiamiamo il nuovo metodo:
print pasta.Calorie()
345
 
Un metodo è una funzione abbinata all'oggetto, mentre un attributo è un dato che lo caratterizza.
Un oggetto fonde insieme sia i dati sia la logica che opera su di essi.(detto ancheincapsulamento)
 
 
Ereditarietà
è uno dei pilastri della programmazione orientata agli oggetti. Una classe eredita il comportamento di un altra classe estendendolo però con funzionalità proprie.
 
Esempio:
class Verdura(Cibo):
    def __init__(self, proteine=0, carboidrati=0):
        self.grassi= 0
        self.proteine = proteine
        self.carboidrati = carboidrati
 
La nuova classe Verdura è di tipo Cibo, ma con la particolarità che l'attributo grassi è sempre uguale a zero.
 
Creiamo un istanza di Verdura:
melanzane = Verdura(proteine=1.5, carboidrati=2.5)
print melanzane.Calorie()
16
 
Il metodo Calorie è stato ereditato dalla classe Cibo e lo possiamo utilizzare anche nella classe derivata.
Invece di assegnare a degli attributi, potrebbe essere PIU' COMODO richiamare il costruttore della classe base.
 
class Verdura(Cibo):
    def __init__(self, proteine=0, carboidrati=0):
        Cibo.__init__(self, proteine=proteine, carboidrati=carboidrati, grassi=0)
 
Metodi privati
 

un metodo o un attributo privato non può essere richiamato dall'esterno della classe a cui appartiene. Il metodo o attributo privato deve iniziare con "__".

 
Esempio:
class Archivio:
    def __apri_file(self):
        print "io sono nascosto"
 
arc = Archivio()
arc.__apri_file()
AttributeError....
 
Per accedere ad un attributo o metodo privato o ci accediamo DENTRO ALA CLASSE, diciamo nella sua implementazione oppure:
 
arc = Archivio()
arc._Archivio__apri_file()
io sono nascosto
 
Metodi speciali
La funzione nativa len ci permette di valutare la lunghezza di una stringa o di una sequenza. Se vogliamo usarla anche con le nostre classi, bisognerà implementare il metodo speciale __len__ :
 
class Archivio:
    def __init__(self, durata):
        self.durata = durata
    def __len__(self):
        return self.durata
 
arc = Archivio(durata = 13)
print len(arc)
13
 
La funzione nativa str ci permette invece di convertire in stringa qualsiasi oggetto. Bisognerà implementare il metodo speciale __str__ :
 
class Archivio:
    def __init__(self, titolo):
        self.titolo= titolo
    def __str__(self):
        return "Sono il titolo %s " % self.titolo
 
arc = Archivio(titolo= "Wall Street")
print str(arc)
Sono il titolo Wall Street
 
Si possono anche riscrivere (cioè fare l'overloading) degli operatori >, <, ==,<=, >=, bisognerà usare: __gt__ , __lt__ , __eq__, __le__, __ge__
 
Il LUNGO ELENCO dei METODI SPECIALI definiti in Pyhton è presente nella documentazione che si può visualizzare premendo F1 da IDLE oppure su http://www.python.org/doc/ref/specialnames.html
Average (1 Vote)
The average rating is 5.0 stars out of 5.