2015-06-23 70 views
0

級聯對象我有以下的函數,它在響應中,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' 

有關如何解決此問題的任何建議?

+1

我已閱讀兩次。我仍然無法弄清楚你在問什麼。也許你應該粘貼更多的代碼? – bosnjak

+0

爲了清晰起見,重新編寫了一些零件。抱歉。 – ILostMySpoon

回答

1

您應該使用getattr訪問對象的屬性:

getattr(api, expectedResponse) 

如果api是一個對象(即self.Startup),該屬性被命名爲expectedResponse值,也應該這樣做。

但任何事情之前,請確保的expectedResponse內容實際上是你的想法是,通過前打印出來。

+0

我比OP的'eval'方法更喜歡這個,但我懷疑他會得到相同的「沒有屬性」的錯誤。 – Kevin

+0

謝謝。這解決了我的問題。 – ILostMySpoon