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) restituisce True se p è un oggetto di tipo o Contatore o una delle sue sottoclassi
  • issubclass(ContatoreDiDebug, Contatore) restituisce True se ContatoreDiDebug è una sottoclasse di Contatore
  • p.__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 da print e str()
  • __cmp__(self, other) confronto tra oggetti, usato da sort(); restituisce un numero negativo se self < other, 0 se self == other e positivo se `self

    other`

Link