.. _provided-instance:

Injecting provided object attributes, items, or call its methods
================================================================

.. meta::
   :keywords: Python,DI,Dependency injection,IoC,Inversion of Control,Attribute,Method,Call
   :description: This page demonstrates how to inject attributes, items or call method of the
                 provided instance.

.. currentmodule:: dependency_injector.providers

You can inject provided object attribute, item or result of its method call.

.. literalinclude:: ../../examples/providers/provided_instance.py
   :language: python
   :emphasize-lines: 28-34
   :lines: 3-

To use the feature you should use the ``.provided`` attribute of the injected provider. This
attribute helps to specify what happens with the provided instance before the injection. You can
use any combination of the following:

- an attribute of the provided object
- an item of the provided object
- a call of the provided object method

When you use a call of the provided instance method you can specify the injections for this
method like you do with any other provider.

You can do nested constructions:

.. literalinclude:: ../../examples/providers/provided_instance_complex.py
   :language: python
   :emphasize-lines: 26-32
   :lines: 3-

.. disqus::