programma 22.1

# Programma 22.1
class Informazioni:
    def info(self):
           for x in dir(self):
               if not x.startswith("_") and x != "info" and x != "identificazione":
                   print(getattr(self,x))
                
class Animale(Informazioni):
    descrizione="appartiene al regno animale"
    comunicazione="comunica emettendo dei suoni"
    identificazione=""
    def __init__(self):
        print(f"Hai creato {self.identificazione}, usa 'info()' per i dettagli.")
            
class Mammifero(Animale):
    identificazione="un mammifero"
    riproduzione="allatta i suoi piccoli"

class Oviparo(Animale):
    identificazione="un oviparo"
    riproduzione="depone le uova"

class Onnivoro(Animale):
    identificazione="un onnivoro"
    nutrizione="si nutre di vegetali e animali"

class Carnivoro(Animale):
    identificazione="un carnivoro"
    nutrizione="si nutre di carne e pesce"

class Erbivoro(Animale):
    identificazione="un erbivoro"
    nutrizione="si nutre di vegetali"

class Felino(Mammifero):
    identificazione="un felino"
    caratteristiche="ha canini e unghie affilati"

class AnimaleSelvatico(Animale):
    identificazione="un animale selvatico"
    note="potrebbe costituire una minaccia"

class AnimaleDaFattoria(Animale):
    identificazione="un animale da fattoria"
    note="si alleva per convenienza"

class AnimaleDomestico(Animale):
    identificazione="un animale domestico"
    note="si alleva in casa"

class Uccello(Oviparo):
    identificazione="un uccello"
    comunicazione="emette dei cinguettii"
    movimento="sa volare"

class Pesce(Oviparo):
    identificazione="un pesce"
    habitat="vive nell'acqua"
    comunicazione="non emette alcun suono"
    nutrizione="si nutre di altri pesci o plancton"
    movimento="sa nuotare"
    
class Balena(Mammifero,Pesce):
    comunicazione="emette dei suoni prolungati"

class Tigre(Felino,Carnivoro,AnimaleSelvatico):
    identificazione="una tigre"
    comunicazione="ruggisce"

class Gatto(Felino,Carnivoro,AnimaleDomestico):
    identificazione="un gatto"
    segniparticolari="fa le fusa"
    comunicazione="miagola"

class Capra(Erbivoro,AnimaleDaFattoria):
    identificazione="una capra"
    segniparticolari="possono mungermi"
    comunicazione="bela"

class Cane(Mammifero,Carnivoro,AnimaleDomestico):
    identificazione="un cane"
    comunicazione="abbaia"
    segniparticolari="scodinzola"
    
class Umano(Mammifero,Onnivoro):
    identificazione="un umano"
    comunicazione="parla"

class Gallina(Uccello,AnimaleDaFattoria):
    identificazione="una gallina"
    movimento="non sa volare come gli altri uccelli"
    segniparticolari="gli umani mangiano le sue uova"
    comunicazione="chioccia"

class Scimmia(Mammifero,Onnivoro):
    identificazione="una scimmmia"
    segniparticolari="somiglia agli umani"

class Pappagallo(Uccello):
    identificazione="un pappagallo"
    comunicazione="emette vari suoni e imita quelli degli altri animali"