python urllib2中的自定义方法

python urllib2中的自定义方法,python,methods,urllib2,Python,Methods,Urllib2,使用urllib2,我们是否能够使用“GET”或“POST”以外的方法(当提供数据时) 我翻遍了图书馆,似乎使用GET或POST的决定“方便地”与请求中是否提供了数据有关 例如,我想与一个CouchDB数据库交互,该数据库需要诸如“DEL”、“PUT”之类的方法。我需要urllib2的处理程序,但需要进行自己的方法调用 我不希望将第三方模块导入到我的项目中,比如CouchDB python api。所以请不要走那条路。我的实现必须使用python 2.6附带的模块。(我的设计规范要求使用基本的可

使用urllib2,我们是否能够使用“GET”或“POST”以外的方法(当提供数据时)

我翻遍了图书馆,似乎使用GET或POST的决定“方便地”与请求中是否提供了数据有关

例如,我想与一个CouchDB数据库交互,该数据库需要诸如“DEL”、“PUT”之类的方法。我需要urllib2的处理程序,但需要进行自己的方法调用

我不希望将第三方模块导入到我的项目中,比如CouchDB python api。所以请不要走那条路。我的实现必须使用python 2.6附带的模块。(我的设计规范要求使用基本的可移植Python发行版)。在导入外部模块之前,我将使用httplib编写自己的接口


非常感谢您的帮助

您可以将urllib2.Request子类化(未经测试)

它可以是:

import urllib2

method = 'PATH'
request = urllib2.Request('http://host.com')
request.get_method = lambda: method()

也就是说,运行时类修改,也称为monkey path。

这正是我想要做的。扩展urllib2模块以重写该方法。啊,蟒蛇之美。请求时调用init时的一个更改。。。urllib2.Request.\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。。。我已经更新了init以包含self,并且还更改了get_方法以返回超类默认值,而不仅仅是复制它的方法。
import urllib2

method = 'PATH'
request = urllib2.Request('http://host.com')
request.get_method = lambda: method()