今天下午我花了几个小时试图在我的自定义扩展中找到一个错误urllib2.Request
。问题是,正如我发现的那样,使用super(ExtendedRequest, self)
, 因为urllib2.Request
(我在 Python 2.5 上)仍然是一个旧样式类,super()
无法使用。
创建具有这两个功能的新类的最明显方法,
class ExtendedRequest(object, urllib2.Request):
def __init__():
super(ExtendedRequest, self).__init__(...)
不起作用。调用它,我留下了AttributeError: type
raise by urllib2.Request.__getattr__()
。现在,在我开始并从 /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