def METHOD_NAME(self, project, by="key"):
    """
    Returns the requested project
    :param project: string: The requested project.
    :param by: string (default is "key"): How to interpret project, can be 'key' or 'name'.
    :return: The requested Project object
    API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects/%7Bproject_key%7D#get
    """
    if by == "key":
        return self.__get_object(super(Projects, self).METHOD_NAME(project))
    elif by == "name":
        for p in self.each():
            if p.name == project:
                return p
    else:
        ValueError("Unknown value '{}' for argument [by], expected 'key' or 'name'".format(by))
    raise Exception("Unknown project {} '{}'".format(by, project))