I'm confused by your use of ```self``` here. The validation functions should not belong to any particular class, I think, especially because the ```name``` is being passed as a parameter to the function.

As for the ```what_exactly_is_wrong``` variable, how would we determine what goes in there? As far as I can tell, these two implementations are actually equivalent.

The only special case I can think of is, for instance, a validator that should return the message "X objects require a valid domain name unless Y or Z or etc...", which I would think suggests that the first proposed implementation is more appropriate, because you would construct a more elaborate validator that uses the same ```is_domain_name``` utility.