solid principles python