Métodos de fábrica vs marco de inyección en Python: ¿qué es más limpio?

Lo que generalmente hago en mis aplicaciones es que creo todos mis servicios / dao / repo / clients usando métodos de fábrica class Service: def init(self, db): self._db = db @classmethod def from_env(cls): return cls(db=PostgresDatabase.from_env()) Y cuando creo una aplicación...