45 lines
869 B
Python
45 lines
869 B
Python
import timeit
|
|
|
|
test_hasattr = """
|
|
if hasattr(gizmo, 'gadget'):
|
|
feature = gizmo.gadget
|
|
else:
|
|
feature = None
|
|
"""
|
|
|
|
test_getattr = """
|
|
feature = getattr(gizmo, 'gadget', None)
|
|
"""
|
|
|
|
test_tryget = """
|
|
try:
|
|
feature = getattr(gizmo, 'gadget')
|
|
except AttributeError:
|
|
feature = None
|
|
"""
|
|
|
|
|
|
class Gizmo:
|
|
def __init__(self):
|
|
self.gadget = True
|
|
|
|
gizmo = Gizmo()
|
|
|
|
test_keys = 'hasattr', 'getattr', 'tryget'
|
|
|
|
|
|
def test():
|
|
for test_key in test_keys:
|
|
test_name = 'test_' + test_key
|
|
test = globals()[test_name]
|
|
setup = 'from __main__ import gizmo'
|
|
t_present = min(timeit.repeat(test, setup=setup))
|
|
del gizmo.gadget
|
|
t_absent = min(timeit.repeat(test, setup=setup))
|
|
gizmo.gadget = True
|
|
print('{:7} {:.3f} {:.3f}'.format(test_key, t_present, t_absent))
|
|
|
|
if __name__ == '__main__':
|
|
test()
|
|
|