@classmethod
def get(cls, pk=None, label=None, machinename=None):
    """
        Get a Computer object with given identifier string, that can either be
        the numeric ID (pk), or the label (and computername) (if unique).

        :param pk: the numeric ID (pk) for code
        :param label: the code label identifying the code to load
        :param machinename: the machine name where code is setup

        :raise aiida.common.NotExistent: if no code identified by the given string is found
        :raise aiida.common.MultipleObjectsError: if the string cannot identify uniquely
            a code
        :raise aiida.common.InputValidationError: if neither a pk nor a label was passed in
        """
    from aiida.common.exceptions import NotExistent, MultipleObjectsError, InputValidationError
    from aiida.orm.utils import load_code
    if pk:
        code_int = int(pk)
        try:
            return load_code(pk=code_int)
        except NotExistent:
            raise ValueError('{} is not valid code pk'.format(pk))
        except MultipleObjectsError:
            raise MultipleObjectsError(
                "More than one code in the DB with pk='{}'!".format(pk))
    elif label != None:
        return cls.get_code_helper(label, machinename)
    else:
        raise InputValidationError(
            'Pass either pk or code label (and machinename)')
