DynamicAttributeAccess#

class omni.graph.core.DynamicAttributeAccess(
context_id: GraphContext,
node: Node,
attributes,
dynamic_attributes: DynamicAttributeInterface,
)#

Bases: object

Base class for the generated classes that contain the access properties for all attributes. Each of the port containers, db.inputs/db.outputs/db.state, houses the attribute data access properties. These containers are constructed when the database is created, with hardcoded properties for all statically defined attributes. This class intercepts getattr/setattr/delattr calls to check to see if the property being requested is a dynamic attribute, and if so then it uses the properties stored in the per-node data as the access points.

So the lookup sequence goes like this
db -> og.Database
.inputs -> ValuesForInput(DynamicAttributeAccess)
.myAttribute -> DynamicAttributeAccess.__getattr__

-> ValuesForInput.__getattr__ (if the above fails)

It makes the bold assumption that the attributes are all set up nicely; no duplicate names, invalid types, missing configuration, etc.

Attributes use leading underscores to minimize name collisions with the dynamically added attributes. (Double underscores would have been preferable but would have made access from the derived classes problematic.)

_context#

Graph context used for evaluating this node

_node#

The OmniGraph node to which this data belongs

_attributes#

The set of attributes on this object’s port

_dynamic_attributes#

Container holding the per-node specification of dynamic attributes, not visible to derived classes

Methods

__init__(context_id, node, attributes, ...)

Initialize common data used for all attribute port types

get_dynamic_attributes()

Get the interface to the dynamic attributes

__init__(
context_id: GraphContext,
node: Node,
attributes,
dynamic_attributes: DynamicAttributeInterface,
)#

Initialize common data used for all attribute port types

Parameters:
  • context_id – Context of the evaluation

  • node – Node owning the attribute

  • attributes – List of attributes belonging to this accessor

  • dynamic_attributes – Interface to the dynamic attributes

get_dynamic_attributes() DynamicAttributeInterface#

Get the interface to the dynamic attributes

Returns:

Direct access to the dynamic attributes managed by this class,

avoiding the __getattr__ override

Return type:

DynamicAttributeInterface