LinuxLudus: Python-domande varie
Federico Ramponi
federico.ramponi@gmail.com
Mar 27 Maggio 2008 14:17:11 CEST
2008/5/27 Valerio Pachera <sirio81@gmail.com>:
> class frutta(self,colore):
> self.colore=colore
>
> def marcire():
> self.colore="nero"
>
> banana = frutta("giallo")
> fragola = frutta("rosso")
>
Ehmmm...
Mah?
Boh...
Beh,
eccoti un esempietto correlato alla lontana, e con una semantica un
pochino diversa. C'e` un po' di roba macchinosa, divertiti:
class Frutto(object):
def __init__(self):
object.__init__(self)
def marcisci(self):
self.colore = "nero"
class Banana(Frutto):
def __init__(self):
Frutto.__init__(self)
self.colore = "giallo"
class Fragola(Frutto):
def __init__(self):
Frutto.__init__(self)
self.colore = "rosso"
frutta = [Banana, Fragola]
# Array di classi
nomi = [f.__name__.upper() for f in frutta]
# Array dei rispettivi nomi ["BANANA", "FRAGOLA"]
cestino = []
while True:
print "Che frutto desideri? ",
nome = raw_input().upper()
if nome == "FINITO":
break
try:
cestino.append( frutta[ nomi.index(nome) ]() )
# nomi.index(nome) e` l'indice che, poniamo, "BANANA" ha all'interno
dell'array
# la classe Banana deve avere lo stesso indice all'interno del suo array
# frutta[ nomi.index(nome) ] e` proprio la classe Banana
# frutta[ nomi.index(nome) ]() e` un nuovo oggetto di quella classe
except ValueError:
# Se il nome non e` stato trovato
print "Non abbiamo alcuna %s" % nome
print "Ecco i colori dei frutti che hai scelto:"
for frutto in cestino:
print frutto.colore
# Polimorfismo
# Non sappiamo i colori; li ha implicitamente scelti l'utente
# scegliendo che oggetti istanziare
print "Ora marciscono..."
for frutto in cestino:
frutto.marcisci()
print "Ecco i colori alla fine:"
for frutto in cestino:
print frutto.colore
# Adesso devono essere tutti neri
ciao,
r.
Maggiori informazioni sulla lista
linuxludus