This is also validation. Why not just one `_validate_data` if this is the way to go about it?

Personally, I think this is not a good use of the "template method" pattern (@larsmans?): the subclasses should just pass their superclass `X` and `y` validated for their purposes.