I think the best way to teach a player about mechanics in a game shouldn't take the player out of your world. What I mean by that is your characters mentioning "Use the attack button" in game is removing the player from your fantasy world for a moment and there might be some more creative ways to do it. (I'm not saying I know all the best ways to do it, though - I think it's very hard to teach players in an effective and immersive way)
An example I can think of is Final Fantasy 7 and how they tried to teach the player how to use the Materia system. They keep it in the game world with one of the characters (Barret) getting frustrated about not knowing how to use Materia. Then the main character (Cloud) decides if he is bothered to explain it to Barret or not.
As for teaching the player general game mechanics, I really don't like complicated "Click here to do this, then here to do that, then click over here" tutorials as they also take the player out of the game world... but some systems are really complex so a good way to teach the player without doing that is definitely a challenge.
I like to try and unlock/introduce game mechanics to the player piece by piece so they are not overwhelmed by any long-winded complex explanations as well as try to teach the player through visual cues anywhere possible.
A good tutorial I think is hard to accomplish and takes a lot more work to do but it's something I hope to achieve one day