programma 22.2

#programma 22.2

class Informazioni:
    def info(self):
        for x in dir(self):
            if not x.startswith("_") and x != "info":
                print(getattr(self,x))
                   
class Animale(Informazioni):
    def __init__(self):
        self.descrizione=""
        super().__init__()
        self.descrizione="è un animale"
        self.comunicazione="comunica emettendo dei suoni"
        print(f"Hai creato {self.descrizione}, usa il metodo 'info()' per i dettagli.")

          
class Mammifero(Animale):
    def __init__(self):
        super().__init__()
        self.descrizione="è un mammifero"
        self.riproduzione="allatta i suoi piccoli"

class Oviparo(Animale):
    def __init__(self):
        super().__init__()
        self.descrizione="è un oviparo"
        self.riproduzione="depone le uova"

class Onnivoro(Animale):
    def __init__(self):
        super().__init__()
        self.descrizione="è un onnivoro"
        self.nutrizione="si nutre di vegetali e animali"

class Carnivoro(Animale):
    def __init__(self):
        super().__init__()
        self.descrizione="è un carnivoro"
        self.nutrizione="si nutre di carne e pesce"

class Erbivoro(Animale):
    def __init__(self):
        super().__init__()
        self.descrizione="è un erbivoro"
        self.nutrizione="si nutre di vegetali"

class Felino(Mammifero):
    def __init__(self):
        super().__init__()
        self.descrizione="è un felino"
        self.caratteristiche="ha canini e unghie affilati"

class AnimaleSelvatico(Animale):
    def __init__(self):
        super().__init__()
        self.descrizione="è un animale selvatico"
        self.note="potrebbe costituire una minaccia"

class AnimaleDaFattoria(Animale):
    def __init__(self):
        super().__init__()
        self.descrizione="è un animale da fattoria"
        self.note="si alleva per convenienza"

class AnimaleDomestico(Animale):
    def __init__(self):
        super().__init__()
        self.descrizione="è un animale domestico"
        self.note="si alleva in casa"

class Uccello(Oviparo):
    def __init__(self):
        super().__init__()
        self.identificazione="è un uccello"
        self.comunicazione="emette dei cinguettii"
        self.movimento="sa volare"

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

class Tigre(Felino,Carnivoro,AnimaleSelvatico):
    def __init__(self):
        super().__init__()
        self.comunicazione="ruggisce"

class Gatto(Felino,Carnivoro,AnimaleDomestico):
    def __ini__(self):
        super().__init__()
        self.identificazione="è un gatto"
        self.segniparticolari="fa le fusa"
        self.comunicazione="miagola"

class Capra(Erbivoro,AnimaleDaFattoria):
    def __init__(self):
        super().__init__()
        self.descrizione="è una capra"
        self.segniparticolari="può essere munta"
        self.comunicazione="bela"

class Cane(Mammifero,Carnivoro,AnimaleDomestico):
    def __init__(self):
        super().__init__()
        self.descrizione="è un cane"
        self.comunicazione="abbaia"
        self.segniparticolari="scodinzola"
    
class Umano(Mammifero,Onnivoro):
    def __init__(self):
        super().__init__()
        self.descrizione="è un umano"
        self.comunicazione="parla"

class Gallina(Uccello,AnimaleDaFattoria):
    def __init__(self):
        super().__init__()
        self.descrizione="è una gallina"
        self.movimento="non sa volare come gli altri uccelli"
        self.segniparticolari="gli umani mangiano le sue uova"
        self.comunicazione="chioccia"

class Scimmia(Mammifero,Onnivoro):
    def __init__(self):
        super().__init__()
        self.descrizione="è una scimmmia"
        self.segniparticolari="somiglia agli umani"

class Pappagallo(Uccello):
    def __init__(self):
        super().__init__()
        self.descrizione="è un pappagallo"
        self.comunicazione="emette vari suoni e imita quelli degli altri animali"