Python sınıfı örneği en son diğerlerinin üzerine yazılıyor

0

Soru

Çalışanlar için bir sınıf oluşturmam, bir nesne olarak saklamak için çalışan bilgilerini içeren bir metin dosyasında okumam, çalışılan bir saat dosyasında okumam ve dosyalardan bir ödeme bilgisi sözlüğü oluşturmam gereken bir ödevim var. Şimdiye kadar, çalışan metin dosyasında yalnızca bir çalışan olduğu sürece iyi çalışıyor gibi görünüyor, ancak bir saniye eklediğimde, ilkinin üzerine yazılır ve ikincisinin bilgileri oluşturulan şeydir. Bu şimdiye kadar sahip olduğum bazı bilgiler:

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)

Şimdiye kadar sahip olduğum şey bu ve doğru çıktıyı döndürüyor, ancak ikinci bir çalışanla ikinci bir satır eklediğimde, sorunları aldığım yer burası. Ayrıca, sadece bir not, maaş bordrosu parametrelerinin sadece metin dosyasından değil, saat metin dosyasından çalışılan tarih ve saat olması gerekir. Programlamada oldukça yeniyim, bu yüzden özür dilerim, eğer bu temel bir düzeltme ise, son 3 günümü farklı panoları ve web sitelerini ziyaret ederek anlamaya çalışarak geçirdim. Herhangi bir yardım çok takdir edilecektir.

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

En iyi cevabı

0

satır

return stf

ne olursa olsun ilk satırı okuduktan sonra kurulum işlevinden geri dönün. Tüm satırları bir Personel nesneleri listesinde saklamak istiyorsanız, bu listeyi oluşturmanız ve sonra döndürmeniz gerekir. böyle bir şey

        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

o zaman Hfile'daki tüm satırları almalısınız. Bu yapı şeklinin sadece stange olduğunu söyledi. personel nesnelerinin listesini oluşturmak için bir personel nesnesi mi oluşturuyorsunuz ?

kodunuzu bir Personel sınıfına ve personel üyesi sınıfına yeniden yapılandırmak isteyebilirsiniz? bu şekilde, çalışma saatleri olan Üyeleri olan bir Personel nesneniz olur. Ama tam resmi görmediğim için burada yanılıyor olabilirim.

şerefe

Markus

2021-11-23 14:51:37

Tavsiye için teşekkürler, bahsettiğiniz gibi yaptım ve dosyaları okumadan ve stf listesine eklemeden önce boş bir stf listesi oluşturdum. Ancak şu hatayı aldım: AttributeError:' list ' nesnesinin 'paySlip' özniteliği yok. Ayrıca, atama yalnızca bir sınıf oluşturulmasını istedi
HelpNeeded

sana şimdi bir liste personeli nesneleri yani neet için itterate üzerinde liste ve çağrı çeki her em.
Markus Rosjat

Diğer dillerde

Bu sayfa diğer dillerde

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