Python instancia de la clase más reciente de sobrescribir todos los demás

0

Pregunta

Tengo un trabajo donde tengo que crear una clase para los Empleados, leer en un archivo de texto que contiene la información del empleado a la tienda como un objeto, leer en las horas trabajadas y el fichero de crear un pago diccionario de información de los archivos. Así que, ahora parece estar funcionando bien, así como sus es sólo uno de los empleados en el empleado de archivo de texto, pero tan pronto como incluir una segunda, la primera se sobrescribe y la información para el segundo es de lo creado. Esta es alguna de la información que tengo hasta ahora:

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)

Esto es lo que tengo hasta ahora, y devuelve el resultado correcto, pero cuando voy a incluir una segunda línea con un segundo miembro del personal que es donde puedo conseguir los temas. Además, sólo una nota, los parámetros para la boleta de pago tiene que ser la fecha y las horas trabajadas a partir de las horas archivo de texto y no sólo el archivo de texto. Soy bastante nuevo en la programación así que disculpas si esta es una revisión, he pasado los últimos 3 días tratando de averiguar por visitar diferentes tablas y sitios web. Cualquier ayuda sería muy apreciada.

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

Mejor respuesta

0

la línea

return stf

retorno de la instalación de funktion después de la lectura de la primera línea, no importa qué. Si desea almacenar toda la línea en una lista de Personal de los objetos que necesita para construir esa lista y, a continuación, volver. algo así como que

        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

entonces usted debe conseguir todas las líneas en hFile. Que dijo que la forma de esta construcción es que es simplemente extraño. se puede construir un personal objeto de breat una lista de personal de los objetos ?

puedes querer reestructurar el código en una clase Staff y Miembro de la clase? de esta manera se tiene un Personal objeto que tiene los Miembros de las horas. Pero puedo estar equivocado ya que no ver la imagen completa

saludos

Markus

2021-11-23 14:51:37

Gracias por la recomendación, yo lo hice como usted ha dicho, y ha creado un vacío stf lista antes de la lectura de los archivos y anexar a la stf lista. Pero tengo el siguiente error: AttributeError: 'lista' el objeto no tiene ningún atributo 'nómina'. También, la asignación solicitada sólo una clase creada
HelpNeeded

ahora tienes una lista de personal de los objetos, de modo que limpio a itterate más de la lista y llamar boleta de pago en cada uno de ellos.
Markus Rosjat

En otros idiomas

Esta página está en otros idiomas

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