[Twisted-Python] weird problem with subclassing library.door.Door

Chris Armstrong carmstro at dynup.net
Fri Apr 13 18:13:37 MDT 2001


Ok, I made a subclass of Door called SecretDoor. The point of this door is
that it's opened with a remote button and is not visible unless it is open.
I tried implementing this by overriding _close() in my class.

class SecretDoor(door.Door):
    def verb_open(self, sentence):
            sentence.subject.hears("This door is opened elsewhere.")

    def _close(self, actor):
        self._undescribe()

Unfortunately, this did not work.
The _undescribe call was apparently being cancelled out by something that was
resetting the description in the current room. I looked for calls to 
_redescribe(), but couldn't find any that were being called after my 
_undescribe(). Eventually I just decided to hack it out and added:

    def _redescribe(self):
        if not self.isOpen:
            self._undescribe()
        else:
            door.Door._redescribe(self)

This is very bad, but I could not figure out any other way to do it. I still
have it this way, and I just wanted to notify glyph and anyone else who's
interested. Is there a better way to do this? Where is the description being
added back into the room?

Ahh well, thanks a bunch.

-- 
Chris Armstrong                        carmstro at twistedmatrix.com
http://twistedmatrix.com/~carmstro     carmstro at dynup.net





More information about the Twisted-Python mailing list