def __getattr__(self, attr):
if "<STR_LIT:_>" in attr:<EOL><INDENT>attr = snake_to_camel(attr)<EOL><DEDENT>if attr in self.__dict__:<EOL><INDENT>return getattr(self, attr)<EOL><DEDENT>try:<EOL><INDENT>return self._attrs[attr]<EOL><DEDENT>except KeyError:<EOL><INDENT>if self._obj is not None:<EOL><INDENT>try:<EOL><INDENT>return self._obj[attr]<EOL><DEDENT>except (AttributeError, KeyError):<EOL><INDENT>pass<EOL><DEDENT><DEDENT><DEDENT>raise AttributeError("<STR_LIT>"<EOL>% (camel_to_snake(attr), dir(self)))<EOL>
Magic for returning an attribute. Will try the attributes of the
wrapper class first, then attributes in self._attrs, then the attributes
of the wrapped objectified element.

Will try a camelCased version of the snake_cased input if the attribute
contains an underscore. This means foo.company_name will return the same
as foo.companyName.