如何利用用户输入指定unit-convert库的参数名与属性名?
如何用动态字符串调用unit-convert库的转换方法
我正在使用unit-convert库,它的调用示例如下:
# Bytes to terabytes >>> UnitConvert(b=19849347813875).tb
现有用户输入的字符串变量:
input_value_unit = 'b' output_value_unit = 'tb' user_input_value = 19849347813875 # 假设的用户输入值
我尝试用UnitConvert(input_value_unit=user_input_value).output_value_unit调用,但这种写法没有使用字符串的实际值,该如何正确替换?
正确实现方式
要动态使用字符串作为参数名和属性名,需要用到Python的两个核心特性:
- 字典解包传递关键字参数:将输入单位与对应值打包为字典,通过
**语法解包后传入UnitConvert getattr()动态访问属性:借助该函数根据字符串名称获取实例对应的输出单位属性
具体代码实现:
# 定义用户输入的值 user_input_value = 19849347813875 # 构造动态参数字典 input_args = {input_value_unit: user_input_value} # 完成实例化与动态属性访问 conversion_result = getattr(UnitConvert(**input_args), output_value_unit) print(conversion_result)
代码说明
- 先以
input_value_unit的字符串值('b')作为键,用户输入值作为值,创建参数字典input_args - 使用
**input_args将字典解包为b=19849347813875形式的关键字参数,传递给UnitConvert构造函数 - 最后通过
getattr()从UnitConvert实例中获取名为output_value_unit('tb')的属性,得到最终转换结果
内容的提问来源于stack exchange,提问作者Roger Brown
相关产品推荐
相关产品推荐

