Well, my favorite is pyro. But I usually go with what teams need.
Is the enemy moving in on our control point for a full assault? Go spy and pick them off. ( The hilarious thing is in maps like Dustbowl or Gravel Pit, the enemy team rarely spy check you.
Do I need to defend? The Heavy will give those baby men their warm milk.
Do I need to take out sentries and all in all, keep the enemy back? I go soldier.
Though the Scout has the most hours ( I LOVE 2fort), he pretty much sucks in any other game match. I can't aim for shit with him since he moves too quickly, and pretty much any class besides support can take him out pretty easily. ( Seriously, try to go up against a Heavy. See how fast the battle ends)
Medic if I need too, but he's boring
Engineer to defend, because its hilarious watching players pulling out their hair trying to move in on a point and getting blown away.
Sniper is my second favorite because of his pimpin hat, and the Huntsman. ( Seriously, the Huntsman's damage is AWESOME. The bad thing is that to really use it effectively, you have to be up a bit close to the enemy.
I don't use the Demoman. Sure, he has one of the best personalities in the game, but his weapons just...aren't my thing.
but pyro is my main.