2011-08-01 27 views
0

Dive into Python: HTTP Web Services -如何爲飛行中的對象製作數據屬性?

class DefaultErrorHandler(urllib2.HTTPDefaultErrorHandler): 
    def http_error_default(self, req, fp, code, msg, headers): 
     result = urllib2.HTTPError(
      req.get_full_url(), code, msg, headers, fp) 
     result.status = code 
     return result 

HTTPError對象最初沒有屬性 '的狀態',即。狀態數據屬性在HTTPError類定義中不存在。這意味着當我爲HTTPError的實例分配內存時,不會爲狀態數據屬性進行分配。

那麼我該如何在下一行創建同一個實例的狀態數據屬性?這似乎令人着迷的東西是怎麼回事說下,我不知道這是給蟒蛇這種靈活性這是從來沒有提供C++/Java


很遺憾,我沒趕上,直到第11章

回答

3

的Python與C或Java有不同的數據類型概念。如果創建的話,Python不會爲實例的數據成員分配內存。相反,創建實例時,它會獲得一個__dict__屬性,指向一個將屬性名稱映射到值的字典。這個字典和任何標準的Python字典一樣動態。如果你

result.status = code 

與關鍵"status"的條目和值code加入到這個字典。

+0

我認爲你的意思是用「'狀態」......「 –

+0

@Vaibhav:是的,謝謝。糾正。 –

+0

你也提到過「實例」。既然所有東西都是一個對象,那麼假設'__dict__'屬性對所有東西本身都存在是否可以安全呢? –

相關問題