gpt4 book ai didi

python - 让 super() 在 Python 中工作 urllib2.Request

转载 作者:行者123 更新时间:2023-12-01 06:17:48 25 4
gpt4 key购买 nike

今天下午,我花了几个小时试图在 urllib2.Request 的自定义扩展中找到错误。正如我发现的那样,问题是 super(ExtendedRequest, self) 的使用,因为 urllib2.Request (我使用的是 Python 2.5)仍然是旧样式类,其中无法使用 super()

创建具有这两种功能的新类的最明显方法,

class ExtendedRequest(object, urllib2.Request):
def __init__():
super(ExtendedRequest, self).__init__(...)

不起作用。调用它,我留下了由 urllib2.Request.__getattr__() 引发的 AttributeError: type 。现在,在我开始之前,从/usr/lib/python 复制粘贴整个 urllib2.Request 类,将其重写为

class Request(object):

有谁知道我如何以更优雅的方式实现这一点? (这个 是有一个基于 urllib2.Request新式类,并支持 super().)

编辑:顺便说一句:提到的 AttributeError:

>>> class ExtendedRequest(object, urllib2.Request):
... def __init__(self):
... super(ExtendedRequest, self).__init__('http://stackoverflow.com')
...
>>> ABC = ExtendedRequest ()
>>> d = urllib2.urlopen(ABC)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/urllib2.py", line 124, in urlopen
return _opener.open(url, data)
File "/usr/lib/python2.5/urllib2.py", line 373, in open
protocol = req.get_type()
File "/usr/lib/python2.5/urllib2.py", line 241, in get_type
if self.type is None:
File "/usr/lib/python2.5/urllib2.py", line 218, in __getattr__
raise AttributeError, attr
AttributeError: type

最佳答案

这应该可以正常工作,因为层次结构很简单

class ExtendedRequest(urllib2.Request):
def __init__(self,...):
urllib2.Request.__init__(self,...)

关于python - 让 super() 在 Python 中工作 urllib2.Request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2267016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com