How do you remove a draw handler after it's been added?
Your method makes a new instance.  What you want to do is make some kind of global variable for dc. 

Could declare a global variable, make a get set property on some blender class. Another way to do this is to use the driver_namespace

import bpy
import blf

class DrawingClass:
    def __init__(self, context, prop):
        self.prop = prop
        self.handle = bpy.types.SpaceView3D.draw_handler_add(
                   self.draw_text_callback,(context,),
                   'WINDOW', 'POST_PIXEL')

    def draw_text_callback(self, context):
        font_id = 0  # XXX, need to find out how best to get this.

        # draw some text
        blf.position(font_id, 15, 50, 0)
        blf.size(font_id, 20, 72)
        blf.draw(font_id, "%s %s" % (context.scene.name, self.prop))

    def remove_handle(self):
         bpy.types.SpaceView3D.draw_handler_remove(self.handle, 'WINDOW')

context = bpy.context             
dns = bpy.app.driver_namespace
dns["dc"] = DrawingClass(context, "Draw This On Screen")


After running the above, can then remove handle from this class with (from py console)

&gt;&gt;&gt; dns = bpy.app.driver_namespace
&gt;&gt;&gt; dc = dns.get("dc")
&gt;&gt;&gt; dc
&lt;__main__.DrawingClass object at 0x7f04830967b8&gt;

&gt;&gt;&gt; dc.remove_handle(
remove_handle(self)
&gt;&gt;&gt; dc.remove_handle()


And the class stops drawing to the screen.