from random import choice, randint nazwiska = [ "Sylwia Ciuruś", "Marcelina Janc", "Dorota Leśny", "Hubert Beker", "Albert Budzeń", "Bruno Kargol", "Olaf Juroszek", ] class Osoba: def __init__(self, name="XXX", age=30, sex="M", status = "Osoba"): self.name = name self.sex = sex self.age = age self.miesieczny_przychod = None self.status = status # print(f"Start obiektu: {id(self)} - plec: {self.sex} wiek: {self.age}") def __str__(self): return f"Oto osoba - {self.name} - {self.status=} " def roczne_dochody(self): if self.miesieczny_przychod is None: return -1 return 12*self.miesieczny_przychod def miesieczny_przychod_wpisz(self,wartosc): if self.miesieczny_przychod is None: self.miesieczny_przychod = wartosc print(f"Zmieniam na {wartosc}") else: print("POzostawiam stare") class Dyrektor(Osoba): def __init__(self,name="Dyrektorskie nazwisko", age=40, sex="M"): print("Uruchamiam init dyrektora") super().__init__(name, age=age, sex=sex, status="Dyrektor") def miesieczny_przychod_wpisz(self, wartosc): self.miesieczny_przychod = wartosc *2 print(f"Zmieniam podwójnie dla dyrektora na {self.miesieczny_przychod}") def roczne_dochody(self): if self.miesieczny_przychod is None: return -2 return 13*self.miesieczny_przychod # zadanie - zdefiniować klasę Prektykant z rocznym dochodem 3 * miesięczny / -3 class Praktykant(Osoba): nowy_status = "Praktykant" def roczne_dochody(self): if self.miesieczny_przychod is None: return -3 return 3 * self.miesieczny_przychod lista_osob = [] for nr in range(10): wiek = randint(20,50) plec = choice(["M","K","X"]) nazwisko = choice(nazwiska) osoba = Osoba(nazwisko, sex=plec, age=wiek) lista_osob.append(osoba) # pojedynczy dyrektor dyro = Dyrektor() lista_osob.append(dyro) praktyk = Praktykant("Adam praktykant", age=30, sex="X") lista_osob.append(praktyk) print(lista_osob) print("----------------------") for obiekt_osoby in lista_osob: mc = randint(2000,5000) print(obiekt_osoby) print(f"Roczny dochód wynosi przed: {obiekt_osoby.roczne_dochody()}") obiekt_osoby.miesieczny_przychod_wpisz(200) obiekt_osoby.miesieczny_przychod_wpisz(300) # obiekt_osoby.miesieczny_przychod = "zero" -tak nie robimy! print(f"Roczny dochód wynosi po : {obiekt_osoby.roczne_dochody()}")