With PyQGIS you can use next code:
canvas = iface.mapCanvas()
layers = canvas.layers()
n = canvas.layerCount()
symbol = range(n)
symbol[0] = QgsLineSymbolV2.createSimple({'color':'green',
'width':'1',
'offset':'1.0'})
symbol[1] = QgsLineSymbolV2.createSimple({'color':'red',
'width':'1',
'offset':'0.0'})
symbol[2] = QgsLineSymbolV2.createSimple({'color':'blue',
'width':'1',
'offset':'-1.0'})
renderers = [ layer.rendererV2() for layer in layers ]
for i, render in enumerate(renderers):
render.setSymbol(symbol[i].clone())
for layer in layers:
layer.triggerRepaint()
In my example with three polylines superposed of next image:

after running the code at the Python Console of QGIS I got:

Editing Note:
In a single layer it's necessary a QgsCategorizedSymbolRendererV2 object. So, code is the following:
layer = iface.activeLayer()
symbols = []
symbol = QgsLineSymbolV2.createSimple({'color':'green',
'width':'1',
'offset':'1'})
symbols.append(symbol)
symbol = QgsLineSymbolV2.createSimple({'color':'red',
'width':'1',
'offset':'0'})
symbols.append(symbol)
symbol = QgsLineSymbolV2.createSimple({'color':'blue',
'width':'1',
'offset':'-1'})
symbols.append(symbol)
# creating categories
categories = [ QgsRendererCategoryV2(i, symbol, str(i)) for i, symbol in enumerate(symbols) ]
renderer = QgsCategorizedSymbolRendererV2('id')
for category in categories:
renderer.addCategory(category)
layer.setRendererV2(renderer)
layer.triggerRepaint()
After running the code at the Python Console of QGIS, in my new example with three features superposed, it works perfectly:
