2016-07-21 11 views
0

Scripting der Blender, ich habe erfolgreich bpy.ops.render.render(some_args) aber bpy.ops.render['render'] fehlschlägt mit BPyOpsSubMod Objekt ist nicht einklagbar. Das verwirrt mich, seit ich erwartet habe, dass auch in Javascript jedes Python-Objekt ein Wörterbuch ist und ich auf Objektmethoden entweder durch obj.member oder obj['member'] zugreifen kann. Wie kann ich die nicht subskribierbaren Eigenschaften umgehen, wenn ich sie nach Namen referenzieren möchte?Zugriff auf nicht subscriptable Eigenschaften

Antwort

-1

Es ist nicht wahr, dass jedes Objekt ein Wörterbuch ist. Jedes Objekt hat ein Wörterbuch, erreichbar durch den Namen .__dict__.

können Sie verwenden entweder

bpy.ops.render.__dict__['render'] 

oder

getattr(bpy.ops.render, 'render') 
+0

* Jedes Objekt ein Wörterbuch * hat, ist ** Falsch **: '[] .__ dict__'? Der Zugriff auf "__dict__" kann in OPs Fall funktionieren, wenn sie eine Funktion haben –

+0

'bpy.ops.render .__ dict__' scheitert' mit AttributeError __dict__' –

+0

aber 'getattr 'scheint zu geben, was ich will. –

Verwandte Themen