Pokračuj ve své práci pro zásilkovou společnost. Společnost chce doplnit do aplikace funkci pro výpočet celkového hodnoty nákladu nějakého auta, aby pak (např. v případě nehody nebo krádeže) mohla snadno spočítat celkovou hodnotu cenných balíků v autě a předat informaci pojišťovně. Příklad je podobný bonusu na výpočet celkové hmotnosti z předchozí části, liší se ale v tom, že hodnotu mají pouze cenné balíky, zatímco hmotnost mají všechny balíky.
Níže je příklad balíků, které můžeš použít pro tvorbu svého programu.
package_1 = ValuablePackage("Grimmauldovo náměstí 11", 1.9, "nedoručen", 5500)
package_2 = Package("Godrikův důl 47", 1.9, "nedoručen")
package_3 = ValuablePackage("Vydrník svatého Drába 13", 1.9, "nedoručen", 5500)
package_list = [package_1, package_2, package_3]
- Vytvoř si proměnnou
total_value
, do které si s využitím cyklu budeš ukládat celkovou hodnotu všech balíků. Na začátku bude mít hodnotu 0. - Vytvoř cyklus, který projde seznam
package_list
. - Vyber funkci, která je podle tebe nejvhodnější pro zajištění bezpečného čtení atributu
value
. Můžeš použít funkciisinstance()
,hasattr()
igetattr()
. Přičti hodnotu balíku k proměnnétotal_value
, aniž by program skončil chybou u objektupackage_2
. - Na konci programu vypiš, jaká je celková hodnota balíků v autě.
Pokud nemáš naprogramované třídy Package
a/nebo ValuablePackage
, můžeš využít kód níže.
class Package:
def __init__(self, address, weight, state):
self.address = address
self.weight = weight
self.state = state
def get_info(self):
return f"Balík na adresu {self.address} má hmotnost {self.weight} kg a je ve stavu {self.state}."
class ValuablePackage(Package):
def __init__(self, address, weight, state, value):
super().__init__(address, weight, state)
self.value = value
def __str__(self):
return super().__str__() + f"Balík má hodnotu hodnotu {self.value} Kč."