Speed up execution

`if method in dir(self):` is very inefficient:

- it must construct a list object listing all the object attributes & methods
- it must then perform a O(N) linear scan of that list

Replace it with the idiomatic `if hasattr(self, method):`, which is a
O(1) expected time hash lookup.

Should fix #11981.
This commit is contained in:
Marius Gedminas 2015-08-25 16:07:21 +03:00
parent efa005c228
commit 44c94328c8

View file

@ -96,7 +96,7 @@ class Base:
@staticmethod
def _generic_g(prop_name, self):
method = "_get_attr_%s" % prop_name
if method in dir(self):
if hasattr(self, method):
return getattr(self, method)()
return self._attributes[prop_name]