How to get cursor position in 2.8
Actually it is not the last line that is causing the error but the GetValue method.
In order to access the location attribute of the cursor attribute of the scene, you must execute scene.cursor.location. Meaning you must first get access to the cursor, then to its location. What you can do is replace your GetValuemethod with :
def GetValue( self ):
    split_path = self.path.split(&quot;.&quot;)
    attr_path = split_path[0]
    if not hasattr(self.context, attr_path):
        print(f&quot;Error : {self.context} does not have any attribute named {attr_path}&quot;)
        return None
    value = getattr(self.context, split_path[0])  # Access 1st member of the property path
    for depth in range(len(split_path[1::])):  # Iteratively access the other members
        attr_path = split_path[depth + 1]
        if not hasattr(value, attr_path):                
            print(f&quot;Error : {value} does not have any attribute named {attr_path}&quot;)
            break
        value = getattr(value, attr_path)
    if self.copyValue and hasattr(value, &quot;copy&quot;):
        value = value.copy()
    return value

Meaning, if you want to access the X coordinate of the cursor location, you can change the last line to :
EventWatcher.AddWatcher(EventWatcher(bpy.data.scenes[0], &quot;cursor.location.x&quot;, CompareLocation, CompareLocationCallback, True))

Result :

By the way, I suggest looking at the guidelines for python naming and such in Blender.