Class Method as Application Handler
Add the depsgraph.
Since 2.8 most handlers take both a scene and a depsgraph argument, the latter is generally a kwarg.
If set up as a simple function this is fine
import bpy
# test clear
bpy.app.handlers.frame_change_pre.clear()

def my_handler(scene):
    print(&quot;Frame Change&quot;, scene.frame_current)

bpy.app.handlers.frame_change_pre.append(my_handler) 

However if using a method of some instanced class, the way blender is wiring this up under the hood requires the extra argument defined for depsgraph. (Even if it is always None in FCPre)
Code below, same result as code above.
import bpy
# test clear
bpy.app.handlers.frame_change_pre.clear()

class MyClass(object):
    def my_handler(self, scene, depsgraph):
        print(&quot;Frame Change&quot;, scene.frame_current, depsgraph)

my_object = MyClass()
bpy.app.handlers.frame_change_pre.append(my_object.my_handler)