How to get reference to object(s) added by an operator? From my python script I want to add some objects to scene and process them later (add constraints etc.). 
If the object to be added is an Empty, I can simply write:

&gt;&gt;&gt; name = "MyObject"
&gt;&gt;&gt; obj = bpy.data.objects.new(name, None)
...
&gt;&gt;&gt; process(obj)


However if the object to be added is a simple mesh, we may use bpy.ops.mesh.primitive_* operators, which adds objects (e.g. cube) to the scene.

&gt;&gt;&gt; bpy.ops.mesh.primitive_cube_add(radius=2)


But how can I get reference to the newly added object? It returns {'FINISHED'} instead of the reference to object.

&gt;&gt;&gt; obj = ??? 
&gt;&gt;&gt; process(obj)


We do not know name of the new object (and I'm not interested in guessing it:)). Instead, I've tried using the index, but it did not work (gives wrong result):

&gt;&gt;&gt; obj = bpy.data.objects[-1] # We don't know the name :(
bpy.data.objects['Lamp']
&gt;&gt;&gt; # ^^ bpy.data.objects['Cube'] was expected
Objects constructed with bpy.ops.mesh.primitive_* are automatically active. If there's no selection-changing operations immediately after object creation, you can access it through bpy.context.active_object or bpy.context.object.