python - 当该属性是类本身时,如何将用户提供的参数分配给python属性
问题描述
我可能做的所有这些都完全错误,但我是一个谷歌教过的 Python 程序员,所以就是这样。
我创建了一个名为“create”的类来构建一个对象。该对象的属性是另一个类的实例(设置)
class setting:
def __init__(self,name,value,IsRequired):
self.name=name
self.IsRequired=IsRequired
self.value=value
class create:
filter=setting("filter","filter_name",True)
consumer=setting("consumer","","True")
def __init__(self, name):
self.name=name
>>>a=create("test")
>>>a.name
'test'
>>> a.filter.IsRequired
True
>>> a.filter.value
'filter_name'
这让我可以单独调用每个对象设置的复杂属性。例如,通过检查 a.filter.IsRequired 查看是否需要执行设置(过滤器)
为了调整设置,特别是“价值”,我正在接受用户的输入。
我可以使用 eval 用字符串引用整个对象。
>>>one="a"
>>>eval(one).filter.IsRequired
True
>>>eval(one).filter.value="NewValue"
>>>a.filter.value
'NewValue'
现在的问题。我正在尝试根据用户提供的输入更改“过滤器”。
var1="a"
var2="filter"
>>> eval(var1).eval(var2).value
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: create instance has no attribute 'eval'
在此示例中,如何将用户提供的变量分配给“过滤器”的“值”?
解决方案
你的意思eval(var1).eval(var2).value
是:
getattr(eval(var1), var2).value
推荐阅读
- python - 文本清理:从文本中删除日期,其中有
- c - 在 OverTheWire 纳尼亚 8 级上真的很挣扎
- c# - 下拉列表中允许的属性值 C# ASP.NET MVC
- python - 如何在 Django 的子模型字段中使用抽象模型字段值作为默认值?
- react-native - RtcLocalView.SurfaceView 在 Android Release APK (ReactNative) 上不起作用
- python - 从Python中的已知索引开始替换字符串中的元素
- swift - 快速串行队列操作乱序
- c# - ASP.NET MVC 注销和返回按钮
- python - Bluetoothctl:在 Windows 机器上运行 rfkill
- javascript - 作为函数的道具是否属于 useEffect 依赖数组?