Jan-11-2023, 11:59 AM
(This post was last modified: Jan-11-2023, 11:59 AM by Gribouillis.)
(Jan-11-2023, 09:00 AM)sabuzaki Wrote: Let's say scenario: We have hundreds of houses each having different internet speed: 5Mbps/100Mbps/25Mbps (so we have a class for each house). Then we have rooms/people in each house. If that person/room has a faster internet speed (lets say room1 for the house5), that room/person should not use houses internet, it should use it's own faster internet.... (use room variable rather than global house variable)In that scenario, Room/Person are not subclasses of House because their relation is not the IS-A relationship. A room is not a particular kind of house. In that case it is better to use aggregation. Each room will have a pointer to the house to which it belongs
class House: def __init__(self, speed): self.speed = speed class Room: def __init__(self, house): self.house = house self._speed = 0 @property def speed(self): return max(self._speed, self.house.speed) def update_speed(self, value): self._speed = value def delete_speed(self): self._speed = 0 h1 = House(5) h2 = House(100) r1 = Room(h2) r2 = Room(h2) print(r1.speed) print(r2.speed) r1.update_speed(500) print(r1.speed) print(r2.speed) print(h2.speed) r1.delete_speed() print(r1.speed) r1.update_speed(50) print(r1.speed)
Output:100
100
500
100
100
100
100