diff --git twisted/python/failure.py twisted/python/failure.py
index ed03281..0016ce7 100644
--- twisted/python/failure.py
+++ twisted/python/failure.py
@@ -140,7 +140,7 @@ class _Code(object):
         self.co_filename = filename
 
 
-class Failure:
+class Failure(BaseException):
     """
     A basic abstraction for an error that has occurred.
 
diff --git twisted/test/test_failure.py twisted/test/test_failure.py
index 3963f8c..f2fd0e4 100644
--- twisted/test/test_failure.py
+++ twisted/test/test_failure.py
@@ -554,7 +554,7 @@ class TestDebugMode(unittest.TestCase):
         origInit = failure.Failure.__dict__['__init__']
         def restore():
             pdb.post_mortem = post_mortem
-            failure.Failure.__dict__['__init__'] = origInit
+            setattr(failure.Failure, '__init__', origInit)
         self.addCleanup(restore)
 
         self.result = []
