Don't rely on exceptions for testing whether a Python attribute names a valid (inverse) IFC attribute

This commit is contained in:
Thomas Krijnen
2015-04-07 15:49:38 +00:00
parent 955190b517
commit 608c7d9841
@@ -43,10 +43,11 @@ class entity_instance(object):
def __init__(self, e): def __init__(self, e):
super(entity_instance, self).__setattr__('wrapped_data', e) super(entity_instance, self).__setattr__('wrapped_data', e)
def __getattr__(self, name): def __getattr__(self, name):
try: return entity_instance.wrap_value(self.wrapped_data.get_argument(self.wrapped_data.get_argument_index(name))) if name in self.wrapped_data.get_attribute_names():
except: return entity_instance.wrap_value(self.wrapped_data.get_argument(self.wrapped_data.get_argument_index(name)))
try: return entity_instance.wrap_value(self.wrapped_data.get_inverse(name)) elif name in self.wrapped_data.get_inverse_attribute_names():
except: raise AttributeError("entity instance of type '%s' has no attribute '%s'"%(self.wrapped_data.is_a(), name)) return entity_instance.wrap_value(self.wrapped_data.get_inverse(name))
else: raise AttributeError("entity instance of type '%s' has no attribute '%s'"%(self.wrapped_data.is_a(), name))
@staticmethod @staticmethod
def map_value(v): def map_value(v):
if isinstance(v, entity_instance): return v.wrapped_data if isinstance(v, entity_instance): return v.wrapped_data