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
0
A
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')
* Jedes Objekt ein Wörterbuch * hat, ist ** Falsch **: '[] .__ dict__'? Der Zugriff auf "__dict__" kann in OPs Fall funktionieren, wenn sie eine Funktion haben –
'bpy.ops.render .__ dict__' scheitert' mit AttributeError __dict__' –
aber 'getattr 'scheint zu geben, was ich will. –