Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 检查字符串是否是对象变量的一部分_Python 3.x_Object - Fatal编程技术网

Python 3.x 检查字符串是否是对象变量的一部分

Python 3.x 检查字符串是否是对象变量的一部分,python-3.x,object,Python 3.x,Object,我想将一个字符串传递给一个方法/类函数,该函数解析要修改的正确属性。我很确定我以前做过,但我好像忘了怎么做 class A: def __init__(self): self.word = B.getWord() self.phrase = "Some default string" def set_dynamically(self, attribute, value): self[attribute] = value 这将允许

我想将一个字符串传递给一个方法/类函数,该函数解析要修改的正确属性。我很确定我以前做过,但我好像忘了怎么做

class A:
    def __init__(self):
        self.word = B.getWord()
        self.phrase = "Some default string"

    def set_dynamically(self, attribute, value):
        self[attribute] = value
这将允许我执行类似于
A.set\u动态('word',C.getWord())


我已经尝试过为此搜索一个问题和答案,但我很难定义它的名称,所以我没有真正找到任何东西。

Python对象有一个名为
\uuuuu setattr\uuuuu(self,name,value)
的内置方法来完成此任务。可以使用对象作为参数调用
setattr()
来调用此方法:

A = A()
setattr(A, 'word', C.getWord())
如果您只需执行类似于
A.word=C.getWord()
(实际上,这可以归结为调用
\uuuu setattr()
,方法与内置的
setattr()
函数相同),那么没有理由这样做,但是如果您正在设置的属性是动态命名的,这就是你如何绕过这个限制


如果您想自定义当您尝试调用类上的
setattr()
时(或当您尝试正常设置属性时)类的行为,您可以使用与重写
\uuuuu init\uu()
相同的方式重写
\uuuuuuu setattr\uuuuuuuuuuu(self、name、value)
方法。如果您这样做,请小心,因为它很容易意外地产生无限递归错误-为了避免这种情况,您可以使用
对象。
setattr\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuoself,name\u value)在被重写的
\uuuuuuuuuuuuuuuuuuuuuuuu。我创建了一个映射对象

def _mapper(self, attr, object):

    m = { "funcA" : object.funcA,
          "funcB" : object.funcB,
           ...    : ...,
        }
    return m.get(attr)


def call_specific_func_(self, attr):

    --do stuff--
    for a in some-list:
        attr = a.get_attr() 
        retvals = self._mapper(attr, a)
        -- etc --



这就是我想要的。我接受了你的回答。