2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
問題出在行:
super(Request, self).__init__(*args, **kwargs)
這將導(dǎo)致在您的實(shí)例上調(diào)用該類的__init__方法,這是沒有意義的。因此,只需擺脫那條線。HttpRequestRequest
另外,我不明白為什么首先要繼承子類。由于python具有鴨子類型,并且您已經(jīng)完全包裝了內(nèi)部對象,所以為什么不這樣做:
class Request(object):
def __init__(self, request, *args, **kwargs):
self._original_request = request
def __getattr__(self, name):
return getattr(self._original_request, name)
def __setattr__(self, name, value):
if name == '_original_request':
super(Request, self).__setattr__(name, value)
else:
self._original_request.__setattr__(name, value)
def __getitem__(self, key):
return self._original_request[key]
def __setitem__(self, key, value):
self._original_request[key] = value

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
堆棧跟蹤顯示了問題所在:代碼試圖將屬性設(shè)置為self._original_request
而不是self.__dict__
。
閱讀Python文檔以定制屬性訪問。
添加回答
舉報(bào)