Scripted Copy of all Materials/Material slots from another Object How can i copy all Material settings from one object to another using Python ?

In the materials settings drop down menu in the user interface i can copy/paste materials: 

Copy Material ( which calls bpy.ops.material.copy() )
Paste Material ( which calls bpy.ops.material.paste() )


When i try to call bpy.ops.material.copy() from the python console i get a {'CANCELLED'} and the subsequent bpy.ops.material.paste() does not work.
Copy only the active Material:

tgt.active_material = src.active_material


Clean copy of all Material Slots from src to tgt:

tgt.data.materials.clear() # ensure the target material slots are clean
for mat in src.data.materials:
    tgt.data.materials.append(mat)