Ciao a tutti,
sto cercando di scrivere un piccolo esempio di ereditarietà in Python utilizzando moduli e packages.
Al momento ho una dir Animale, che ha al suo interno le dir Animali, Cane, Gatto. Animali quindi è la superclasse di Cane e Gatto.Ho il file __init__.py in tutti i rami di tali dir e in quella principale.
All'interno di Animali ho animale.py:
Codice:
class Animale:
def __init__(self, nome, razza):
self.nome = nome
self.razza = razza
def visualizza(self):
print self.nome
print self.razza
Questa è cane.py:
Codice:
class Cane(Animale):
def __init(self, nome, razza, verso):
Animale.__init__(nome, razza)
self.verso = verso
def visualizza(self):
Animale.visualizza(self)
print self.verso
print "Sono un cane"
Infine questa è gatto.py:
Codice:
class Gatto(Animale):
def __init(self, nome, razza, verso):
Animale.__init__(nome, razza)
self.verso = verso
def visualizza(self):
Animale.visualizza(self)
print self.verso
print "Sono un gatto""
Ora, dopo aver definito il percorse del package nella variabile di ambiente PYTHONPATH ed aver scritto:
Codice:
from Animali import *
alla creazione di un oggetto Animale mi viene detto:
a= Animale("b","c")
name 'Animale' is not defined
E' chiaro che sbaglio qualcosa nell'indicare i moduli, ma allora perché non dà errori quando scrivo i comandi di import?
Se invece scrivo:
Codice:
from Animali import Animale
l'errore è :
Codice:
'module' object is not callable
Quindi non si riferisce alla classe ma al nome del modulo.