Difference between bpy.data.objects['Armature'] and bpy.data.armatures['Armature'] Can someone please explain me what is the difference between:

bpy.data.objects['Armature']
bpy.data.armatures['Armature']

I can see they have different types and properties:
&gt;&gt;&gt; type(bpy.data.objects['Armature'])
&lt;class 'bpy_types.Object'&gt;

&gt;&gt;&gt; type(bpy.data.armatures['Armature'])
&lt;class 'bpy.types.Armature'&gt;

bpy.data.objects['Armature'].pose is a valid object but bpy.data.armatures['Armature'].pose returns an error, why?
I also noticed bpy.data.objects['Armature'].data returns bpy.data.armatures['Armature']
What is their respective definition and for which purpose shall one be used vs the other?
Document here
bpy_types.Object is a container wrapper for inner data to communicate with Blender Scene and other stuff.
You can rename your bone and armature:

&gt;&gt;&gt; C.object
bpy.data.objects['Obj Armature']

&gt;&gt;&gt; C.object.data
bpy.data.armatures['Real Armature']

And with the tree display in outliner, that should be clear that Object has Pose properties and the armature itself doesn't.