Python versione Bignami - Classi
Definizione
# Definisce una classe contatore class Contatore: "Implementa una sequenza monotona crescente di numeri" # Costrutture def __init__(self, inizio = 0): "Crea un contatore che parte da 'inizio'" # Inizializza lo stato della classe self.valore = inizio # Metodo, definito come una funzione def successivo(self, passo = 1): "Genera un numero" # Si accede allo stato della classe tramite self res = self.valore self.valore += passo return res # Crea un oggetto di tipo "Pipa" p = Contatore(5) print p.successivo(2)
Ereditarietà
# Nuova classe che eredita da Contatore class ContatoreResettabile(Contatore):
Estendere metodi
class ContatoreDiDebug(Contatore): "Contatore che stampa i numeri che vengono generati" def successivo(self, passo = 1): # Chiama lo stesso metodo della classe padre res = Contatore.successivo(self, passo) print "Debug:", res return res
Operazioni con le classi
isinstance(p, Contatore)restituisceTruese p è un oggetto di tipo o Contatore o una delle sue sottoclassiissubclass(ContatoreDiDebug, Contatore)restituisceTruese ContatoreDiDebug è una sottoclasse di Contatorep.__class__restituisce la classe di p.
Esempio:
c = Contatore()
d = ContatoreDiDebug()
isinstance(c, Contatore) -> True
isinstance(d, Contatore) -> True
isinstance(c, ContatoreDiDebug) -> False
isinstance(d, ContatoreDiDebug) -> True
issubclass(ContatoreDiDebug, Contatore) -> True
c.__class__ == Contatore -> True
d.__class__ == Contatore -> False
d.__class__ == ContatoreDiDebug -> True
Alcuni metodi speciali
__del__(self)distruttore (normalmente non è usato)__repr__(self)restituisce una stringa che descrive l'oggetto__str__(self)restituisce un valore stringa per l'oggetto; viene usato daprintestr()__cmp__(self, other)confronto tra oggetti, usato dasort(); restituisce un numero negativo seself < other, 0 seself == othere positivo seself > other