def METHOD_NAME(self, candidate):
    for pw in self.property_weights:
        is_match = pw.method.is_match(self.resource, candidate)
        if is_match is None:
            # method was unable to compare values
            continue
        yield pw.weight if is_match else -1 * pw.negative_weight