George Nyoro wrote:

class Table:
def delete_this(self):
#code to delete this object or assign it null or None
pass
def do_something(self):
pass

x=Table()
x.delete_this()

#at this point, I want such that if I try to use x I get some sort of error
e.g.

x.do_something()

#Error: x is definitely not an object anymore


Instead of "x.delete_this()", why not just say "del x"? Why try to fight Python, instead of using the tools Python already gives you?


Objects cannot delete themselves, because they cannot know all the places they are referenced.

If you absolutely have to have something like x.delete_this, then try this:


class Table:
    def __init__(self):
        self.alive = True
    def delete_this(self):
        self.alive = False
    def do_something(self):
        if self.alive:
            print("Doing something.")
        else:
            raise TableError("object has been killed")

class TableError(RuntimeError):
    pass


--
Steven

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to