Dependent properties aren't just initially calculated based on other properties, they are always calculated using the "get" method you created. Even if you just display the object, the property will be recomputed there (assuming it's a public property that is displayed).
So if you need the value of battery_level to update after you step, and it isn't updating, make sure you are updating the properties that are used in the compuation for for battery_level.
If instead you'd rather just have the initial value computed based on other properties, but then would like to manually and directly set the value later, don't use dependent properties. Instead, set the initial value in the object constructor.