mercoledì 5 dicembre 2012

Classi e oggetti

OK, devo confessarvi un segreto che riguarda il corso.
Tanto ormai siete grandi, svezzati, avete visto parecchie cose, anche gli oggetti. Sì non l'ho mai detto, per non spaventarvi ma li abbiamo usati. Magari senza saperlo.

Ecco un esempio (obj.py):
#!/usr/bin/python
# -*- coding: utf-8 -*-

import math

st = "Valore approssimato usato di solito pi = {:4.2f}"
stpi = st.format(math.pi)
print stpi

st = "ciao a tutti!"
stup = st.upper()
print stup
Ecco: st è un oggetto appartenente alla classe str; format() e upper() sono metodi, cioè funzioni appartenenti alla classe. Possiamo verificarlo prima di subito, così:
Ecco, tutto qui! Semplice vero?
Bene perché era da un po' che dovevo dirvelo, ci servirà in futuro.
In Python tutto è un oggetto e gli oggetti vengono molto comodi quando il codice (lo script) diventa lungo o non banale. Il codice diventa più chiaro, più facile da comprendere, gestire e aggiornare.

Vediamo come si può creare una classe nuova di pakka. Definiamo IntContainer, una classe abbastanza scema che ci permette di contare.
#!/usr/bin/python
# -*- coding: utf-8 -*-

class IntContainer(object):
    def __init__(self, i):
        self.i = int(i)

    def add_one(self):
        self.i += 1
  
ic = IntContainer(2)
ic.add_one()
print ic.i

Se poi modifichiamo leggermente lo script otteniamo (ic1.py):
#!/usr/bin/python
# -*- coding: utf-8 -*-

class IntContainer(object):
    def __init__(self, i):
        self.i = int(i)

    def add_one(self):
        self.i += 1
        return self.i
        
ic = IntContainer(2)
d = ic.add_one()
print d

d = ic.add_one()
print d
dove vediamo che la variabile d, di tipo ic si comporta esattamente come quelle del primo script. OK?

Ecco quello che mi premeva era giustificare il perché del modo con cui scriviamo, p.es. st.format(). Poi su classi e oggetti ci torneremo. L'help online ha un intero capitolo in proposito 9. Classes

Juhan

L'indice di "Mission Python" qui.

Alla prossima!

Nessun commento:

Posta un commento