diff --git a/src/re/likelihood.py b/src/re/likelihood.py
index 96b32cb5c5948e2d73a13518ec346ec750db8c65..96209114b354c324d37856aff733e34f07b7abd2 100644
--- a/src/re/likelihood.py
+++ b/src/re/likelihood.py
@@ -392,6 +392,9 @@ class Likelihood(LazyModel):
         lp = LikelihoodPartial(self, primals=primals, point_estimates=point_estimates)
         return lp, lp.splitx(primals)[0]
 
+    def __str__(self):
+        return f"{self.__class__.__name__}()"
+
 
 class LikelihoodPartial(Likelihood):
     """Likelihood with partially inserted `primals`."""
@@ -491,6 +494,10 @@ class LikelihoodPartial(Likelihood):
         """
         return _parse_point_estimates(self.point_estimates, primals)[1:]
 
+    def __str__(self):
+        args_str = f"{self.likelihood}, point_estimates={self.point_estimates}"
+        return f"{self.__class__.__name__}({args_str})"
+
 
 class _ChainModel(LazyModel):
     forward_left: Callable = field(metadata=dict(static=False))
@@ -647,6 +654,9 @@ class LikelihoodWithModel(Likelihood):
             likelihood_argnames=likelihood_argnames,
         )
 
+    def __str__(self):
+        return f"{self.likelihood}.amend({self.forward})"
+
 
 class LikelihoodSum(Likelihood):
     likelihood_summands: Tuple[Likelihood] = field(metadata=dict(static=False))