获取组合两个字符串的变量值

问题描述 投票:0回答:1

我想要为我正在使用的 API 提供动态参数。 为此,我正在寻找一种简单的方法来实现以下目标:

def __init__(self):
    self.search_param_list = [from, to]
    self.from = A
    self.to = B

def search_params2(self):
    parameters = {parameter: self.parameter for parameter in self.search_param_list}
    return parameters

输出预计如下所示:

parameters ={"from": A, "to": B}

如果需要,我这样做是为了更改 init 中的参数,但如果没有必要,我不必这样做。

python class list-comprehension
1个回答
0
投票

from
是非法变量名。使用
from_
或其他东西。

将要搜索的名称保存为字符串。

使用

getattr
通过字符串名称访问实例属性。

class A:
    def __init__(self):
        self.x = 1
        self.from_ = 2
        self.to = 3
        self.search_param_list = ['from_', 'to']

    def search_params2(self):
        return {p: getattr(self, p) for p in self.search_param_list}

演示:

>>> A().search_params2()
{'from_': 2, 'to': 3}

当然,你可以通过

vars
立即获取所有实例变量。

>>> vars(A())
{'x': 1, 'from_': 2, 'to': 3, 'search_param_list': ['from_', 'to']}
© www.soinside.com 2019 - 2024. All rights reserved.