ИМХО self передавать нормально. Я сам так и делаю. И даже tkinter так делает. Но важно не создавать по десять методов в базовом классе под каждый класс, который вызывает методы базового, а определить общий интерфейс; и уже потом его использовать как попало ).