Have you seen the setPythonData/getPythonData methods available on any object that is derived from PhysObject? They allows you to assign an arbitray python object to any PhysShape, PhysActor, …
Just iterate over the shapes returned by the raycast, get the object you have assigned to the shapes previously, and call whatever method you want on this object.
enn0x