将属性为String的对象连接起来



我有以下函数,它接收一个响应、一个CallableInterface对象和一个属性作为String

def assert_response(response, api, expectedResponse):
    # api = self.Startup
    # expectedResponse = "ERROR_NOT_SUPPORTED"
    eval(api + "." + expectedResponse) 

上面看到的行应该评估为这样的属性调用:

self.Startup.ERROR_NOT_SUPPORTED

但是,我得到以下错误,因为expectedResponse中包含的值没有被扩展。

AttributeError: 'CallableInterface' object has no attribute 'expectedResponse'

关于如何解决这个问题,有什么建议吗?

您应该使用getattr来访问对象属性:

getattr(api, expectedResponse)

如果api是一个对象(即self.Startup),其属性被命名为expectedResponse的值,则应该这样做。

但在做任何事情之前,请确保expectedResponse的内容实际上是您认为的内容,方法是事先打印它。

最新更新