So you'd rather the function return `a(lambda) / a_v`? E.g., it would be `extinction_ratio_ccm89(wave, r_v)`? (not a function of `a_v` or `ebv`)

I'm not necessarily opposed to this idea, just want to be clear on what you're suggesting.

I think this might be two separate suggestions:
(1) expose underlying "raw" functions (as defined in original papers)
(2) change main interface from function-based to class-based

My thoughts on (2) are already on the other line comment.