Works for me:

    valLabel=QgsPalLayerSettings()
    valLabel.readFromLayer(iface.activeLayer())
    valLabel.fontSizeInMapUnits=True
    valLabel.writeToLayer(iface.activeLayer())
    iface.mapCanvas().refresh()




-------

For the data-defined way check [QgsPalLayerSettings::DataDefinedProperties
 FontSizeUnit][1]

and [enum QgsPalLayerSettings::SizeUnit][2]

>Units used for option sizes, before being converted to rendered sizes.
>
>Enumerator

>Points 	
>MM 	
>MapUnits 	
>Percent 	


  [1]: http://qgis.org/api/classQgsPalLayerSettings.html#aa4a68d8eea503219523ce0c7f0ba3ceaa7825f9191edeb5245e5589f768616cb1
  [2]: http://qgis.org/api/classQgsPalLayerSettings.html#a6a79cd114865439dd9a4668abd927597