Difference between MonoBehaviour and Scriptable Object and what to use?

I am working on game and I am having trouble related to the inventory. My doubt is on creating a generic class for Items, and whether it should be a sub class of Monobehaviour or Scriptable Object. Would it make any difference?

The documentation is quite clear about what is a Scriptable object :

A class you can derive from if you
want to create objects that don’t need
to be attached to game objects.

This is most useful for assets which
are only meant to store data.

If the objects in your inventory are just data containers. Your generic class can derive from ScriptableObjects, though, it’s not necessary at all, unless you really want to use the functions proposed by the ScriptableObjects class.

A script will derive from the MonoBehaviour only if this script is responsible for the behaviour of a GameObject in your game. If the GameObject acts during your game. Here, I don’t think this is the case for your inventory items.