Python instance de la classe la plus récente d'écraser tous les autres

0

La question

J'ai une mission où je dois créer une classe pour les Employés, de lire dans un fichier de texte contenant des informations sur l'employé de magasin comme un objet, lu dans une heures travaillées fichier et la création d'un paiement d'informations dictionnaire des fichiers. Donc, à présent, il semble fonctionner correctement tant que leur est seulement un employé dans le fichier texte, mais dès que j'ai inclure un second, le premier est écrasé et les informations de la seconde est ce qui est créé. C'est une partie de l'information que j'ai pour l'instant:

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)

C'est ce que j'ai à ce jour et elle renvoie le bon de sortie, mais quand je inclure une seconde ligne avec un deuxième membre du personnel qui est là où je reçois les questions. Aussi, juste une remarque, les paramètres de la feuille de paie ont obtenu d'être la date et les heures travaillées à partir des heures fichier texte et pas seulement le fichier texte. Je suis assez nouveau à la programmation alors, toutes mes excuses si cela est corrigé, j'ai passé les 3 derniers jours à essayer de le comprendre en visitant les différents conseils d'administration et des sites web. Toute aide serait grandement appréciée.

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

La meilleure réponse

0

la ligne

return stf

de retour de l'installation funktion après readin la première ligne de n'importe quoi. Si vous souhaitez stocker toutes les lignes dans une liste de membres du Personnel des objets vous avez besoin pour construire cette liste, puis le retourner. quelque chose comme ça

        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

alors vous devriez obtenir toutes les lignes dans les hFile. Cela dit, la façon dont cela est de construire est juste stange. vous construisez un objet personnel de breat une liste des membres du personnel des objets ?

vous pourriez veux restructurer votre code dans un Personnel de classe et StaffMember classe? de cette façon, vous avez un objet Personnel qui a des Membres avec heures. Mais j'ai peut être mal ici car je ne vois pas l'image complète

cheers

Markus

2021-11-23 14:51:37

Merci pour la recommandation, j'ai fait comme vous l'avez mentionné et a créé un vide stf liste avant de lire les fichiers et en les ajoutant à la stf liste. Mais j'ai eu l'erreur suivante: AttributeError: 'liste' de l'objet n'a pas d'attribut 'paye'. Aussi, la mission a demandé une seule classe créée
HelpNeeded

vous avez maintenant une liste de personnel, des objets afin de vous neet à itterate sur la liste et appeler la feuille de paie de chaque em.
Markus Rosjat

Dans d'autres langues

Cette page est dans d'autres langues

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