Estrazione dati da una classe

di il
5 risposte

Estrazione dati da una classe

class redditi():
    def __init__(self,nome,età,fatturato):
        self.name=nome
        self.age=età
        self.fatturato=fatturato
        self.imposta=float()
        
    def getName(self):
        return self.name

    def getAge(self):
        return self.age

    def getFascia(self):
        if (self.fatturato <= 5000):
            return ("Fascia1")
        if (5000 < self.fatturato < 10000):
            return ("Fascia2")
        if (10000 <= self.fatturato < 25000):
            return ("Fascia3")
        if (self.fatturato >= 25000):
            return ("Fascia 4")

    def getImposta(self):
        aliquota=0
        if ((self.age < 25) and (getFascia=="Fascia 1" or getFascia=="Fascia2")):
            aliquota==0,125
            self.imposta==aliquota*self.fatturato
            return (self.imposta)
        if ((self.age >= 25) and (getFascia=="Fascia3" or getFascia=="Fascia4")):
            aliquota==0,22
            self.imposta==aliquota*self.fatturato
            return (self.imposta)

    def getDetrazione(self):
        return (self.fatturato-self.imposta)
I metodi getImposta e getDetrazione non mi danno il risultato voluto, dove sbaglio?

5 Risposte

  • Re: Estrazione dati da una classe

    Ciao,
    gli errori sono semplici da individuare e da risolvere:
    Il metodo getImposta non funziona per il fatto che richiami in maniera eratta il metodo getFascia...
    getFascia=="Fascia 1"
    sostituisci con:
    self.getFascia()=="Fascia 1"
    Inoltre, in
    
    aliquota==0,125
    self.imposta==aliquota*self.fatturato
    va solo un simbolo di ugualizza ("=" non "=="), per settare il valore delle variabili.


    Infile, il metodo getDetrazione non funziona per il fatto che non hai inizializzato l'attributo self.imposta
  • Re: Estrazione dati da una classe

    Grazie per il suggerimento. Per quanto riguarda i primi due errori in effetti sono delle distrazioni evitabilissime (soprattutto sul simbolo uguale).
    sul metodo getDetrazione , intendi dire che al suo interno devo inizializzare self.imposta? in che modo di preciso? nel metodo __init__ mi sembrava di aver messo l'attributo.
    Io alla fine creo un oggetto con nome età e fatturato e in base a quelli gli altri metodi mi permettono di calcolare le imposte da applicare.
  • Re: Estrazione dati da una classe

    Errore mio... non avevo notato che era inizializzata la variabile ("self.imposta=float()") nel __init__;
  • Re: Estrazione dati da una classe

    Ok , perfetto.
    Successivamente vado a richiamare il metodo getDetrazione per ottenere i risultati che mi interessano. Il metodo getDetrazione però non mi restituisce la trattenuta, bensì il fatturato in quanto calcola l'imposta sempre pari a zero.
    Il metodo getDetrazione funziona solo se viene richiamato prima getImposta che quindi ritornerà il valore di imposta da applicare? Altrimenti avremo sempre il valore nullo della variabile inizializzata, giusto?
    cliente_uno=redditi("Nome e cognome", 30, 28000)
    print(cliente_uno.getFascia())
    print(cliente_uno.getImposta())
    print(cliente_uno.getDetrazione())
    (script su idle python)
  • Re: Estrazione dati da una classe

    Esatto, dato che imposta viene inizializzato a 0, il metodo getDetrazione restituirà fatturato-0;
    giustamente, avendo un cambiamento della variabile imposta solo nel metodo getImposta devi richiamare prima quella se vuoi avere un risultato corretto.
Devi accedere o registrarti per scrivere nel forum
5 risposte