Jaką funkcję napisać? Pomoc z "programem wynagrodzen"

0

Witajcie,
Mógłby mi ktoś podpowiedzieć jak dodać funkcję "Podwyżka", która zmieniałaby wynagrodzenie danej osoby?
Zależy mi, aby wyświetlała się kwota zarobków przed podwyżką oraz po podwyżce. Próbowałem użyć dekoratora @classmethod, ale chyba w którymś miejscu popełniam błąd.
Za pomoc będę niezmiernie wdzięczny! :)

class Czlowiek:
    """Profil osoby wraz z zarobkami"""
    total = 0
    wyplata =""
    
    def __init__(self, imie, nazwisko, wiek, wyplata):
        self.imie = imie
        self.nazwisko = nazwisko
        self.wiek = wiek
        self.wyplata = wyplata
        Czlowiek.total +=1
        print("\n\nWitamy nowego Kolegę!!!")
    def przedstaw_sie(self):
        print("Imie: ", self.imie, "\nNazwisko: ", self.nazwisko, "\nwiek: ", self.wiek, "\nwypłata: ", self.wyplata)
    
cz1 = Czlowiek("Damian","Kowalski","25","5000")
cz1.przedstaw_sie()
cz2 = Czlowiek("Wojtek","Nowak", "24","12500")
cz2.przedstaw_sie()
cz3 = Czlowiek("Damian","Pawlak", "24","4000")
cz3.przedstaw_sie()
print("Ilosc obiektów wynosi: ",Czlowiek.total)
5

dlaczego podajesz wypłatę jako string, zamiast liczbę? To jest nielogiczne.

jak dodać funkcję "Podwyżka", która zmieniałaby wynagrodzenie danej osoby?

np. tak:

    def podwyzka(self, amount):
        self.wyplata += amount

ale to zadziała, jak podasz liczbę (ew. można później skonwertować, ale... po co?)

cz3 = Czlowiek("Damian","Pawlak", "24", 4000)
cz3.podwyzka(100)
cz3.przedstaw_sie() # wypłata:  4100
47

Ta wyplata jako zmienna klasowa to chyba nie zamierzony mechanizm?

0
ledi12 napisał(a):

Ta wyplata jako zmienna klasowa to chyba nie zamierzony mechanizm?

Zamierzony. Jestem samoukiem i pewnie jeszcze popełniam podstawowe błędy :) Jak byś to zrobił w takim razie?

45
Ignacy napisał(a):
ledi12 napisał(a):

Ta wyplata jako zmienna klasowa to chyba nie zamierzony mechanizm?

Zamierzony. Jestem samoukiem i pewnie jeszcze popełniam podstawowe błędy :) Jak byś to zrobił w takim razie?

W takim razie w jakim celu ją tworzysz? W kodzie nawet jej nie używasz (overide przez zmienna instancyjna) :P Wystarczy wyplata jako zmienna instancyjna co już masz zakodowane.

0
ledi12 napisał(a):
Ignacy napisał(a):
ledi12 napisał(a):

Ta wyplata jako zmienna klasowa to chyba nie zamierzony mechanizm?

Zamierzony. Jestem samoukiem i pewnie jeszcze popełniam podstawowe błędy :) Jak byś to zrobił w takim razie?

W takim razie w jakim ją tworzysz? W kodzie nawet jej nie używasz (overide przez zmienna instancyjna) :P Wystarczy wyplata jako zmienna instancyjna co już masz zakodowane.

źle spojrzałem. Rzeczywiście wypłata = "" nie była zamierzonym zabiegiem. Nie usunalem jej po kilku dziwnych probach i kombinacjach

1 użytkowników online, w tym zalogowanych: 0, gości: 1