From: Paul Vinciguerra Date: Tue, 5 Mar 2019 12:30:04 +0000 (-0800) Subject: Test: vpp_papi_provider. __getattr__ X-Git-Tag: v19.04-rc1~329 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F21%2F18021%2F3;p=vpp.git Test: vpp_papi_provider. __getattr__ Replace custom __getattr__ with custom __getattribute__. Change-Id: Ib96176abc07eefedba305ed874621001a810eb0d Signed-off-by: Paul Vinciguerra --- diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py index c21d8c2a8b0..2188ed3c041 100644 --- a/test/vpp_papi_provider.py +++ b/test/vpp_papi_provider.py @@ -174,11 +174,15 @@ class VppPapiProvider(object): return self.api(apifn, d) return f - def __getattr__(self, name): + def __getattribute__(self, name): try: - return getattr(self, name) - except: - return self.factory(name, getattr(self.papi, name)) + method = super(VppPapiProvider, self).__getattribute__(name) + except AttributeError: + method = self.factory(name, getattr(self.papi, name)) + # lazily load the method so we don't need to call factory + # again for this name. + setattr(self, name, method) + return method def connect(self): """Connect the API to VPP"""