def register_robot_var(scope: str, *var_names): def wrapper(func): assert not hasattr(func, "robot_name"), RuntimeError( "装饰器<register_robot_var>应在robot装饰器<keyword>的下面使用,因为需要获取关键字的名称" ) if not hasattr(func, "internal_robot_var_info"): func.internal_robot_var_info = set() func.internal_robot_var_info.add(get_dae_variable_name(scope, *var_names)) return func return wrapper
时间: 2024-03-04 17:51:12 浏览: 153
robot.rar_51 机器人_51机器_site:www.pudn.com_灭火机器人
这是一个 Python 装饰器函数,名为 `register_robot_var`,其作用是将一个变量名注册到被装饰函数的 `internal_robot_var_info` 集合中。
该装饰器函数接受两个参数:`scope` 和 `*var_names`。`scope` 表示变量名所在的作用域,`*var_names` 表示一个可变数量的位置参数,用于传递变量名。该函数返回一个内部函数 `wrapper`,该函数接受一个参数 `func`,即被装饰的函数。
在 `wrapper` 内部,首先使用 `assert` 语句检查被装饰函数 `func` 是否已经被 `robot` 装饰器装饰过,从而获取到关键字的名称。如果没有被装饰过,则抛出一个 `RuntimeError` 异常。
接着,如果被装饰函数 `func` 没有 `internal_robot_var_info` 属性,则创建一个空集合并将其赋值给该属性。然后,将通过 `get_dae_variable_name` 函数获取到的变量名添加到集合中。
最后,返回被装饰函数 `func`。
阅读全文