Если вы хотите, например, передать client_address
в качестве первого аргумента каждой функции, вы можете создать подкласс SimpleXMLRPCRequestHandler (передать ваш подкласс в качестве обработчика при создании экземпляра SimpleXMLRPCServer) и переопределить _dispatch
(чтобы добавить self.client_address
к кортеж params, а затем делегировать остальное SimpleXMLRPCRequestHandler._dispatch
). Если этот подход в порядке, и вы хотите увидеть код, просто спросите!
Я не уверен, как вы могли бы безопасно использовать что-либо, кроме аргументов функции, чтобы "сделать client_address
видимым" - нет client_address
в качестве голого имени, глобального или иного, есть только self.client_address
каждый экземпляр класса обработчика запросов (и такие хаки, как копирование его в глобальные переменные, чувствуют действительно действительно отвратительно - и небезопасно при многопоточности и т. д. и т. д.).