Would it make more sense to have an init method that takes these as params (or an options dict) and make these read-only since they need to be set right after init?