Supponiamo che il mio oggetto debba utilizzare un'API per comunicare con un dispositivo. La chiamata API di cui ho bisogno è Api.do_something ().
Quale sarebbe il modo migliore per risolverlo assumendo che io debba chiamarlo solo una volta? Sono propenso a utilizzare la terza opzione, ma non è l'iniezione della dipendenza davvero troppo di una seccatura quando ho solo bisogno di chiamarlo una volta? La soluzione più semplice è la prima, ma poi devo prendere in giro Api (). Do_something () ogni volta che il mio test usa do_stuff (). D'altra parte con l'iniezione di dipendenza devo comunque fornire un oggetto stub.
1)
class MyObject(object):
def do_stuff():
return Api().do_something()
2)
class MyObject(object):
def __init__():
self.api = Api()
def do_stuff():
return self.api.do_something()
3)
class MyObject(object):
def __init__(api):
self.api = api
def do_stuff():
return self.api.do_something()