# uproot.behaviors

This module defines behaviors, which are mix-in classes that provide a high-level interface to objects read from ROOT files.

Behaviors do not have a required base class, and they may be used with Awkward Array’s `ak.behavior`.

To add a behavior for a ROOT class:

1. Translate the ROOT class name from C++ to Python with uproot.classname_encode. For example, `"ROOT::RThing"` becomes `"Model_ROOT_3a3a_RThing"`.

2. Create a submodule of `uproot.behaviors` without the `"Model_"` prefix. For example, `"ROOT_3a3a_RThing"`.

3. Include a class in that submodule with the fully encoded name. For example, `"Model_ROOT_3a3a_RThing"`.

When Uproot reads an instance of the class, it would always create a deserialization model if one is not predefined. But if a behavior with the appropriate name exist, the new class will inherit from the behavior, giving the newly created object specialized methods and properties.

See also uproot.models.