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 で行うように)、パッチが適用されたものではなくデフォルトの Reply が使用されます。
このアプローチが失敗する理由は何でしょうか?
注__init__
:個別にパッチを適用すると、より良い結果が得られるようです。しかし、クラスの動作をさらに変更する必要があります。最後に、返信をオーバーライドして、SOで尋ねられたように、受信した添付ファイルを取得しようとしています。