Dip your toes in metaprogramming and learn about __init__'s big brother, the dunder method __new__.
__init__
__new__
The 2 hardest problems in programming are naming, cache invalidation, and off-by-one errors.