Assignment 8

This is fantastic. You turned the reference implementation upside down which is kind-of in violation of OOaO but you got it to work and you should absolutely be proud of yourself and demonstrated the concept I wanted.

The alternate way to perform the same would be to call:

    ChessPiece.is_legal_move(self, position)

inside `ChessPiece.__init__()` that way it wouldn't call the child is_legal_move()