diff --git a/src/linearization.py b/src/linearization.py
index 5f04a018d9c18d514bc931fd67298c838508c054..e8bdaf997a020525669d585055fb1dcc53d97c31 100644
--- a/src/linearization.py
+++ b/src/linearization.py
@@ -126,7 +126,7 @@ class Linearization(Operator):
 
     def __getitem__(self, name):
         if not isinstance(self.domain, MultiDomain):
-            return NotImplemented
+            raise TypeError(f"'{type(self)}' object is not subscriptable")
         return self.new(self._val[name], self._jac.ducktape_left(name))
 
     def __neg__(self):
diff --git a/src/operators/operator.py b/src/operators/operator.py
index 5a52d2fefdffa907113316dfe4986bb7571bb162..38517423387b05cf8688cc1c705efee244237448 100644
--- a/src/operators/operator.py
+++ b/src/operators/operator.py
@@ -257,7 +257,7 @@ class Operator(metaclass=NiftyMeta):
         from .simple_linear_operators import ducktape
 
         if not is_operator(self):
-            return NotImplemented
+            raise TypeError(f"'{type(self)}' object is not subscriptable")
         if not isinstance(self.target, MultiDomain):
             raise TypeError("Only Operators with a MultiDomain as target can be subscripted.")
         return ducktape(None, self, key) @ self