Python instanță de clasă cele mai recente suprascrie toate celelalte

0

Problema

Am o misiune în care trebuie să creați o clasă pentru Angajați, citiți într-un fișier text care conține informații despre angajați de la magazin ca un obiect, citiți în numărul de ore lucrate de fișiere și de a crea o plată informații dicționar de fișiere. Deci, în prezent pare a fi de lucru bine, atâta timp cât este doar un singur angajat în angajat fișier text dar îndată ce includ un al doilea, primul este suprascris și informații pentru cea de-a doua este ceea ce este creat. Aceasta este o parte din informațiile care le am până acum:

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)

Aceasta este ceea ce am până acum, și se întoarce de ieșire corectă, dar atunci când includ o a doua linie cu un al doilea membru al personalului care este în cazul în care am probleme. De asemenea, doar o notă, parametrii de fluturaș de salariu trebuie să fie data și numărul de ore lucrate de ore fișier text și nu doar fișierul text. Sunt destul de nou la programare asa ca ne cerem scuze dacă acest lucru este o bază fix, mi-am petrecut ultimele 3 zile încercând să-mi dau seama, vizitând diferite panouri și site-uri web. Orice ajutor ar fi apreciat foarte mult.

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

Cel mai bun răspuns

0

linie

return stf

reveni la setup funcție după ce a citit prima linie, indiferent de ce. Dacă doriți să stocați toate linie într-o listă a Personalului obiectele de care ai nevoie pentru a construi această listă și apoi se întoarce. ceva de genul asta

        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

atunci ar trebui să obțineți toate liniile în hFile. Asta a spus cum acest lucru este de a construi este doar ciudat. ai construi un obiect personal pentr o listă a personalului de obiecte ?

s-ar putea să restructureze codul într-un Personal de clasă și StaffMember clasa? în acest fel aveți un obiect Personal care are Membri cu ore. Dar eu pot fi greșit aici, deoarece am dont a vedea imaginea completă

noroc

Markus

2021-11-23 14:51:37

Multumesc pentru recomandare, am facut cum ai menționat și a creat un gol stf listă înainte de a citi fișierele și adăugarea la stf lista. Dar am si eu urmatoarea eroare: AttributeError: "listă" obiect nu are atributul 'fluturaș de salariu'. De asemenea, misiunea a solicitat-o singură clasă a creat
HelpNeeded

acum aveți o listă a personalului de obiecte, astfel încât aveți nevoie pentru a itterate peste listă și apel fluturaș de salariu pe fiecare dintre ele.
Markus Rosjat

În alte limbi

Această pagină este în alte limbi

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