Commit 0647e645 authored by Ing. Petr Pauš, Ph.D.'s avatar Ing. Petr Pauš, Ph.D.
Browse files

cviko 2

parent 2578a1e2
Loading
Loading
Loading
Loading

2025/02/classes.py

0 → 100644
+83 −0
Original line number Diff line number Diff line
class Equipment:
    def __init__(self, id, name):
        self.id = id
        self.name = name

    def __str__(self):
        return f"{self.name} ({self.id})"

class Furniture(Equipment):
    def __init__(self, id, name, legs):
        super().__init__(id, name)
        self.legs = legs

    def __str__(self):
        return super().__str__() + f" legs:{self.legs}"

class Electronics(Equipment):
    def __init__(self, id, name, power):
        super().__init__(id, name)
        self.power = power

    def __str__(self):
        return super().__str__() + f" power:{self.power}"
    
class WashingMachine(Electronics):
    def __init__(self, id, name, power, weight):
        super().__init__(id, name, power)
        self.weight = weight

    def __str__(self):
        return super().__str__() + f" weight: {self.weight}"
    

class Household:
    def __init__(self):
        self.equipment = {}

    def add(self, eq:Equipment):
        if eq.id in self.equipment:
            raise Exception("Already exists")
        self.equipment[eq.id] = eq
    
    def __str__(self):
        result = ""
        for id, eq in self.equipment.items():
            result += eq.__str__() + "\n"
        return result
    
    def delete(self, id):
        if id not in self.equipment:
            raise Exception("Does not exist")
        del self.equipment[id]
        
e1 = Equipment(1, "Koberec")
e2 = Furniture(2, "Skrin", 4)
e3 = Electronics(3, "TV", "100")
e4 = WashingMachine(4, "Pracka", 500, 50)

print(e1,e2,e3,e4)

house = Household()
try:
    house.add(e1)
    house.add(e2)
    house.add(e3)
    house.add(e4)
except Exception as e:
    print(e) 

print(house)

try:
    house.add(e1)
except Exception as e:
    print(e)

try:
    house.delete(2)
    house.delete(2)
except Exception as e:
    print(e)

print(house)