我一直在尝试修改suds.transport的Reply类。
我尝试了以下方法:
import suds.transport
old_reply = suds.transport.Reply
class Reply2:
"""
A transport reply
@ivar code: The http code returned.
@type code: int
@ivar message: The message to be sent in a POST request.
@type message: str
@ivar headers: The http headers to be used for the request.
@type headers: dict
"""
def __init__(self, code, headers, message):
"""
@param code: The http code returned.
@type code: int
@param headers: The http returned headers.
@type headers: dict
@param message: The (optional) reply message received.
@type message: str
"""
print 'hello, i patched the class'
self.code = code
self.headers = headers
self.message = message
def __str__(self):
s = []
s.append('CODE: %s' % self.code)
s.append('HEADERS: %s' % self.headers)
s.append('MESSAGE:')
s.append(self.message)
return '\n'.join(s)
suds.transport.Reply = Reply2
执行client
请求时(与通常使用Suds一样),使用默认的回复而不是修补的回复。
这种方法失败的原因是什么?
注意:似乎单独修补__init__
可以提供更好的结果。但我需要修改类中的更多行为。
最后,我试图覆盖回复以获取传入的附件,例如询问on SO和解决方案here
答案 0 :(得分:1)
suds.transport.http
模块使用以下行导入Reply
:
from suds.transport import *
并且之前你可以修补它。您还需要更新该引用:
import suds.transport.http
suds.transport.http.Reply = Reply2