python中如何把字符串转换为属性名并调用

python中如何把字符串转换为属性名
例如:

class Service:
    def __init__(self):
        self.dot='A'
service=Service()
class Pas:
    def __init__(self):
        self.Ain=5
pas=Pas()

如何实现以下功能

print(pas.service.dot+in)
>>>5

可以使用getattr()反射获取,示例代码:

class Service:
    def __init__(self):
        self.dot = 'A'

    def test(self):
        print('test')

service = Service()

dot = getattr(service, 'dot')
print(dot)

有帮助的话,请点采纳该答案~

用eval直接对变量名求值。

字符串判断,然后对应调用即可

该回答引用ChatGPT

如有疑问,可以回复我!

要将字符串转换为属性名,可以使用Python内置函数getattr。 getattr(object, name[, default])函数将返回对象的属性值。其中object是要获取属性的对象,name是字符串形式的属性名,default是可选的默认值,如果指定的属性不存在,则返回默认值。

在本例中,要获取pas对象的service属性的dot属性值,可以使用以下代码:

getattr(getattr(pas, 'service'), 'dot')

解释一下,首先getattr(pas, 'service')将返回pas对象的service属性值,也就是service对象。然后再使用getattr函数获取service对象的dot属性值,得到'A'。

最终的表达式是:

pas.service.dot

可以用以下代码实现所需的输出:

print(getattr(getattr(pas, 'service'), 'dot') + str(pas.Ain))

输出将是:5。