On 20 ago, 18:01, [EMAIL PROTECTED] wrote:

> The problem is that code like this does error checking backwards. A
> call to NetworkedThing.changeMe will first do a slow error check and
> then a fast one. Obviously there are various ways to get around this -
> either have the subclass explicitly ask the superclass to error check
> first, or vice totally versa. Is there some accepted pattern/idiom for
> handling this issue?

What about this:

class AbstractThing():
    def changeMe(self,blah):
         self.verify_blah(blah)
         self.blah = blah

    def verify_blah(self, blah):
         if blah < 1:
              raise MyException

class NetworkedThing(AbstractThing):
    def verify_blah(self, blah):
        AbstractThing.verify_blah(blah)
        if blah > self.getUpperLimitOverTheNetworkSlowly:
             raise MyOtherException

That is, it's the verify step that is overriden/enhanced, not the
changeMe method that stays the same.

--
Gabriel Genellina

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to