def getFriendlyString(self):
        """
        Returns the version, printed in a friendly way.

        More precisely, it trims trailing zero components.
        """
        if self._friendlyString is not None:
            return self._friendlyString

        resultComponents = [
            self.getIntMajor(),
            self.getIntMinor(),
            self.getIntBuild(),
            self.getIntRevision()
        ]

        for i in range(len(resultComponents) - 1, -1, -1):
            if resultComponents[i] == 0:
                del resultComponents[i]
            else:
                break

        result = ".".join(map(str, resultComponents))

        self._friendlyString = result

        return result
Returns the version, printed in a friendly way.

        More precisely, it trims trailing zero components.