В этом случае, как и во многих других, я предпочитаю внедрение зависимостей : ваш класс (например, в __init__
) принимает соединение с БД в качестве аргумента.
Это делает тестирование проще и понятнее, позволяет переключать стратегии по мере необходимости (например, переходить к стратегии «пул соединений с БД», если вы обнаружите, что в противном случае вы делаете слишком много соединений с БД одновременно), и распределяет обязанности более точно и гибко.
В целом, я думаю, что Dependency Injection - это, вероятно, самый важный шаблон проектирования, который не был указан в великой книге «Банда 4»! -)