Shaman
А прямые вызовы функций не увеличивает связанность?
Подать мы можем объект, уже созданный. А создать его снаружи можно как угодно. Поэтому прямые вызовы методов связывают только этот объект, который может быть просто абстрактной обёрткой для чего нибудь конкретного. Да даже то, что подаётся в конструктор для агрегации, может быть создано через фабрику, которая конструирует что надо и как надо. Вот наследование может быть применено, чтобы реализовать такую гибкость кода?
Shaman
Или их тоже лучше косвенно вызывать, при том не фиксируя набор аргументов?
В питоне, наверное, не получится так сделать, потому что он не функциональный (не задумывался таким изначально), из-за чего оно будет выглядеть некрасиво (непонятно). В функциональных же языках всё сделано для этого: функции подаются снаружи, а внутри функции они объединяются в композицию функций, которая возвращает функцию.