Empty.location VS Empty.matrix_world.to_translation()

can someone please explain why the location of an empty is different to the position row in the world matrix.

In my code i am trying to set the location of an armature based on a set of parented empties. Initially i tried to access the data as


This returns a vector which is the reported 3D location in the blender UI
After investigation, the above code returns the same as


Can someone please explain why the location is relative to the basis (?) and is not the same in world coords?