These are public attributes yet the restrictions of how they are set it within the __init__
Either these should actually be made private, or you need to make them properties (read-only) or to have an explicit setter property defined too (if you want the user to be able to redefine them).

Either way, there should be a layer between the user and the data here.