def __getattribute__(self, attr_name):
        """
        Returns the value of existing attributes, and returns a new expectation for any attribute
        that doesn't yet exist.

        :param str attr_name: The name of the attribute to look up.
        :return: The existing value or a new ``Expectation``.
        :rtype: object, Expectation
        """

        __dict__ = object.__getattribute__(self, '__dict__')

        if __dict__ and attr_name in __dict__:
            return __dict__[attr_name]

        caller = inspect.getframeinfo(inspect.currentframe().f_back)
        return self._proxy.add_expectation(attr_name, caller)
def __getattribute__ ( self , attr_name ) : __dict__ = object . __getattribute__ ( self , '__dict__' ) if __dict__ and attr_name in __dict__ : return __dict__ [ attr_name ] caller = inspect . getframeinfo ( inspect . currentframe ( ) . f_back ) return self . _proxy . add_expectation ( attr_name , caller )
Returns the value of existing attributes, and returns a new expectation for any attribute
        that doesn't yet exist.

        :param str attr_name: The name of the attribute to look up.
        :return: The existing value or a new ``Expectation``.
        :rtype: object, Expectation