python interface segregation principle