Доступ к атрибутам корневого объекта из податрибута, вызываемого в python - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть класс «Подписчик», который обрабатывает подписчиков с различными методами SOAP, перечисленными в тоннах WSDL, например:

class Subscriber(object):
    soaps = {}

    @classmethod
    def load_soap(cls, name, wsdl):
        cls.soaps[name] = zeep.Client(wsdl=wsdl).service

    def __getattr__(self, item):
        if item in self.soaps:
            return self.soaps[item]
        else:
            raise AttributeError

    def __init__(self, msisdn):
        self.msisdn = msisdn

, а затем использую его следующим образом:

Subscriber.load_soap('Group', 'http://...')
ab1 = Subscriber('12221112233')
ab1.Group.CreateGroup(msisdn = ab1.msisdn, code = i, length = 1)

И я хочу использовать только ab1.Group.CreateGroup(code = i, length = 1) с msisdn и другими обязательными атрибутами, автоматически добавляемыми в вызов SOAP.Я могу перечислить обязательные атрибуты конкретного метода SOAP и сравнить его со списком атрибутов подписчика, но как мне добавить свой код в вызываемый подобъект класса zeep.Client.Service?Я думаю, что мне нужно какое-то сочетание partial(), __call__ и __getattr__, но я не могу их правильно склеить.

Есть предложения?

...