我在httplib的HTTPConnection.putheader中添加了一行(import pdb; pdb.set_trace()
),所以我可以看到裏面發生了什麼。Python:令人費解的httplib行爲
Python26\Lib\httplib.py
,行489:
def putheader(self, header, value):
"""Send a request header line to the server.
For example: h.putheader('Accept', 'text/html')
"""
import pdb; pdb.set_trace()
if self.__state != _CS_REQ_STARTED:
raise CannotSendHeader()
str = '%s: %s' % (header, value)
self._output(str)
然後運行這個從解釋
import urllib2
urllib2.urlopen('http://www.ioerror.us/ip/headers')
...和預期PDB踢:
> c:\python26\lib\httplib.py(858)putheader()
-> if self.__state != _CS_REQ_STARTED:
(Pdb)
在PDB我有在飛行中評估表情的奢侈品,所以我試圖輸入self.__state
:
(Pdb) self.__state
*** AttributeError: HTTPConnection instance has no attribute '__state'
唉,這個實例沒有__state
。但是,當我輸入step
時,調試器將通過
if self.__state != _CS_REQ_STARTED:
行沒有問題。這是爲什麼發生?如果self.__state
不存在,python將不得不像我在輸入表達式時那樣引發異常。
Python版本:2.6.4在Win32
對不起,你似乎不明白這個問題。 httplib如何在不引發異常的情況下引用一個不存在的變量? – Anna 2010-03-14 11:09:32