I only program as a hobby so I don't know the right book to drop.
But you're screwing up encapsulation bad here. You're mad about how verbose OOP programming can be and that's okay. It is. When you're doing OOP you need to program defensively like you're protecting your code from being used incorrectly by the next Pajeet programmer that comes along, because you'll forget what the hell you did in six months and then you'll be about at the same skill level as a Pajeet programmer trying to understand your own code.
For example, what happens if somebody fatfingers an entry into the class's attribute table while updating multiple attributes? You'd need to catch that, and then also you'd need to catch if someone entered an invalid value. For every possible K-V combination. Good luck. One point of entry, one point of exit, do one thing, this is the OOP way.