Remove unnecessary initializations

You set all of these in the Grid __init__ function anyway, so you
don't need to declare them at the class scope.

Additionally, there's a gotcha when initializing at the class scope:
instances get copies. For reference types, like arrays, this isn't a
deep copy, so there's an aliasing risk. Not a problem in this case,
but it sets off alarm bells.
Added comments, and changed Grid constructor.

1) comments regarding internal variables in Grid() whose usage was not clear from names
2) Since tic-tac-toe is always played on a square board, there's no need to pass in separate row and col params (especially since you were already asserting that they were the same!)