Le Jeudi 08 Juin 2006 15:15, Duncan Booth a écrit : > but the more usual way is just to call the original method directly in the > base class. > > class SqliteAdapter(BaseClass): > def create_table(self, *args) > self.table_evolve(*args) > result = BaseClass.create_table(self, *args) > return result >
Yeah, this the right way to reuse ancestor's implementation of a method. > If that isn't what you are trying to achieve you'll have to explain more. I'm not a ruby programmer, but I understood it like this : the prupose is to modify the behavior of an existing third-party class, in all application (even in existing third party modules), without any code modifications (traditional patch) in those modules. Your proposal is not as good here, assuming BaseClass is defined in module toto, you can still do toto.BaseClass = SqliteAdapter, but you must ensure that this code is imported before any other where classes inherit from BaseClass. The one I porpose in my other post is robust, several packages can even patch the same method with no side effects. -- _____________ Maric Michaud _____________ Aristote - www.aristote.info 3 place des tapis 69004 Lyon Tel: +33 426 880 097 -- http://mail.python.org/mailman/listinfo/python-list