python - 使用与字符串同名的变量执行操作
问题描述
假设我有一个名为“x”的变量和一个值为“x”的字符串(string1 =“x”)。如何通过字符串对变量进行处理?例如更改变量的值或调用方法(如果它是对象)?提前致谢
解决方案
变量可通过字典locals()
和globals()
. 如果你想通过它的弹簧名称访问一个特定的变量,你可以这样做,例如
>>> my_var = 'hello'
>>> x = 'my_var'
>>> locals()[x]
'hello'
您也可以使用这种方法分配回变量,例如
>>> my_var = 'hello'
>>> x = 'my_var'
>>> locals()[x] = 'something else'
>>> my_var
'something else'
由于函数是 Python 中的对象,因此您可以以相同的方式访问任何本地可用的函数来调用它们。
>>> def my_test_function(n):
>>> return n*8
访问该方法并调用它。
>>> locals()['my_test_function'](4)
32
要通过对象名称访问对象的属性,您可以使用getattr()
, 和setattr()
设置它们。例如,创建一个具有单个属性的对象,称为your_prop
.
class Example:
your_prop = 2
a = Example()
该值可通过 获得your_prop
。
>>> a.your_prop
2
该属性可以通过名称使用getattr
>>> getattr(a, 'your_prop')
2
可以使用以下方式设置属性setattr
:
>>> setattr(a, 'your_prop', 5)
>>> a.your_prop
5
推荐阅读
- google-sheets - 如何仅将 Google Sheet 脚本分配给一张工作表?
- java - 更新到 Androidx,我无法在发布中生成 APK:AAPT2 进程意外退出
- mysql - SQL:具有相同格式的两个日期时间值之一不正确,而另一个正确
- python-3.x - python 多处理是否适用于 Hadoop 流?
- c++ - 如何在c ++中重载字符串的乘法运算符
- pandas - 通过合并添加列 - 熊猫
- javascript - 单元测试失败并出现错误“超过 '4000ms' 的赛普拉斯命令超时”。
- google-cloud-run - 阻止我的网络应用程序公开查看但仅对开发人员开放的最简单方法是什么?
- swift - 仅在创建构建时使用未解析的标识符“FirebaseApp”
- async-await - 使用 async/await 时的排队延迟