首页 > 解决方案 > 当该属性是类本身时,如何将用户提供的参数分配给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'

在此示例中,如何将用户提供的变量分配给“过滤器”的“值”?

标签: pythonpython-2.7

解决方案


你的意思eval(var1).eval(var2).value是:

getattr(eval(var1), var2).value

推荐阅读