Python istanza della classe più recenti sovrascrittura di tutti gli altri

0

Domanda

Ho un incarico in cui devo creare una classe per i Dipendenti, per leggere un file di testo contenente informazioni sui dipendenti, di archiviare come un oggetto, in una delle ore lavorate file e creare un sistema di pagamento informazioni dizionario di file. Quindi, sembra funzionare bene fintanto che il loro è solo un dipendente, il dipendente, file di testo, ma non appena ho comprendono un secondo, il primo è sovrascritti e le informazioni per la seconda è ciò che è creato. Queste sono alcune delle informazioni che ho finora:

class Staff:
    staffData = {}

    def __init__(self, EmpID, LName, FName, RHours, HRate, OTMult, TaxC, SBand, Date, HrsWorked):
        self.EmpID = EmpID
        self.LName = LName
        self.FName = FName
        self.RHours = RHours
        self.HRate = HRate
        self.OTMult = OTMult
        self.TaxC = TaxC
        self.SBand = SBand
        self.Date = Date
        self.HrsWorked = HrsWorked
        Staff.staffData[EmpID] = self

    def setup(staff ,hrs):  # staff and hrs are text files
        with open(staff) as empFile:
            for line in empFile:
                SID, LN, FN, RH, HR, OTM, TC, SB = line.split()
            with open(hrs) as hFile:
                for line in hFile:
                    SID, date, HrsWorked = line.split()
                    stf = Staff(SID, LN, FN, int(RH), int(HR), float(OTM), int(TC), int(SB),date, HrsWorked)
                    return stf

    def paySlip(self,HrsWorked, date):
        paymentDict = {}

        #creates paySlip using information from instance and creates others by performing 
         calculations
        return paymentDict

jg = Staff.setup('Staff.txt', 'Hrs.txt')
dic = jg.paySlip(42,'31/10/2021')
print(dic)

Questo è ciò che ho finora, e restituisce l'output corretto, ma quando ho dispongono di una seconda linea con un secondo membro del personale che è dove ho problemi. Inoltre, solo una nota, i parametri per la busta paga hanno avuto modo di essere di data e orario di lavoro dalle ore file di testo e non solo il file di testo. Sono abbastanza nuovo di programmazione, quindi mi scuso se questo è un semplice fix, ho passato gli ultimi 3 giorni cercando di capire come funziona la visita di diversi consigli e siti web. Qualsiasi aiuto sarebbe molto apprezzato.

class dictionary file object
2021-11-23 14:15:15
1

Migliore risposta

0

la linea

return stf

di ritorno dal setup funktion dopo readin la prima linea, non importa cosa. Se si desidera memorizzare tutti i linea in un elenco del Personale oggetti, che è necessario per costruire l'elenco e poi tornare. qualcosa di simile

        with open(hrs) as hFile:
            stf = []
            for line in hFile:
                SID, date, HrsWorked = line.split()
                stf.append(Staff(SID, LN, FN, int(RH), int(HR), float(OTM), int(TC), int(SB),date, HrsWorked))
            return stf

poi si dovrebbe ottenere tutte le linee in hFile. Che ha detto che il modo in cui questa è la build è proprio strana. costruire un personale oggetto di breat un elenco di personale oggetti ?

si potrebbe desiderare di ristrutturare la il tuo codice in una classe e StaffMember classe? in questo modo si dispone di un Personale oggetto Membri ore. Ma posso essere sbagliato, dal momento che non vedo l'immagine completa

cheers

Markus

2021-11-23 14:51:37

Grazie per la raccomandazione, ho fatto come hai detto e ha creato un vuoto stf elenco prima di leggere il file e l'aggiunta di stf elenco. Ma ho ottenuto il seguente errore: AttributeError: 'lista' oggetto non ha l'attributo 'busta paga'. Inoltre, l'assegnazione è richiesta solo una classe creata
HelpNeeded

si dispone ora di un elenco di personale di oggetti in modo che si neet per itterate la lista e chiamata in busta paga su ogni em.
Markus Rosjat

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................