# 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'

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?

• o.select_get(), Blender 2.80 use getter and setter for some value – HikariTW May 24 '19 at 5:05
• And if you find anything that come up with AttributeError. Try a simple command in interactive console, using Ctrl+Space to auto complete with keywords. Most of the time you can find a similar function due to the 2.80 API change. – HikariTW May 24 '19 at 5:07

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.
ListObjects = [ o for o in context.scene.objects if o.select_get()]