Problem with bpy.context.selected_objects I have a script which includes the line:

ListObjects = [ o for o in bpy.context.selected_objects if o.type == 'MESH' ]
print(ListObjects)


That works as a standalone script. But within a larger script it fails with:

AttributeError: 'Context' object has no attribute 'selected_objects'

I have tried to follow the advice here: bpy.context.selected_objects by using:

ListObjects = [ o for o in bpy.context.scene.objects if o.select]

But that fails with:

AttributeError: 'Object' object has no attribute 'select'


Has the o.select attribute changed in 2.80, or am I using it incorrectly? Something to do with needing to use an override, perhaps?
So the thing that is you should always use context that passed by the operator instead of bpy.context. Unless you want to override context with the one you need in rare case.

And Blender 2.80 does change the object.select to its private(?) value, one should consider use object.select_set(bool) and object.select_get() for select value manipulation.

So assume that your function got a context passed in:
ListObjects = [ o for o in context.scene.objects if o.select_get()]
will give you a more reliable context.