Python instância da classe mais recente, substituindo todos os outros

0

Pergunta

Eu tenho uma tarefa em que eu tenho que criar uma classe para os Trabalhadores, lido em um arquivo de texto contendo informações de funcionários para armazenar um objeto, a leitura em uma de horas trabalhadas e o arquivo de criar um pagamento dicionário de informações de arquivos. Então, agora parece estar funcionando bem, contanto que a sua é apenas um empregado, o empregado arquivo de texto, mas assim que eu incluir um segundo, o primeiro é substituído e a informação para o segundo é o que é criado. Esta é uma das informações que tenho até agora:

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)

Isso é o que eu tenho até agora, e devolve o resultado correcto, mas quando eu incluir uma segunda linha, com um segundo membro da equipe que é onde eu recebo os problemas. Além disso, apenas uma nota, os parâmetros para a folha de pagamento tem que ser a data e as horas trabalhadas a partir do horário de arquivo de texto e não apenas o arquivo de texto. Eu sou muito novo para programação de modo desculpas se esse é um fix, eu passei os últimos 3 dias tentando descobrir por visitar placas diferentes e sites. Qualquer ajuda seria muito apreciada.

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

Melhor resposta

0

a linha de

return stf

o retorno do programa de configuração do funktion após readin primeira linha, não importa o que. Se você deseja armazenar toda a linha em uma lista da Equipe objetos que você precisa para construir essa lista e, em seguida, devolvê-lo. algo assim

        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

em seguida, você deve obter todas as linhas em hFile. Que disse que a forma como esta é a compilação é apenas stange. você cria um objeto staff para grandes uma lista de funcionários objetos ?

você pode querer reestruturar seu código em uma Equipe de classe e StaffMember classe? desta forma, você tem um objeto Staff que tem Membros com horas. Mas eu posso estar errado aqui desde que eu não veja a imagem completa

cheers

Markus

2021-11-23 14:51:37

Obrigado pela recomendação, eu fiz como você mencionou, e criou um vazio stf lista antes de ler os arquivos e acrescentar ao stf lista. Mas eu tenho o seguinte erro: AttributeError: 'lista de' objeto não tem nenhum atributo 'folha de pagamento'. Também, o pedido de atribuição de apenas uma classe criada
HelpNeeded

agora você tem uma lista de funcionários objetos, então você precisa de itterate sobre a lista e chamar comprovante de pagamento, em cada um dos em.
Markus Rosjat

Em outros idiomas

Esta página está em outros idiomas

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