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。