Ilias Lazaridis wrote: > Is there any way (beside a patch) to alter the behaviour to an > existing function. Is ther a python construct similar to the > "alias_method" of Ruby:
This is a Python list. Would you care to explain what alias_method does? > > (example from an simple evolution support for a ruby orm) > > #---------------------------------------------------------------------- > -------- # use "alias_method" to enlink the code > #---------------------------------------------------------------------- > -------- > > class SqliteAdapter > alias_method :old_create_table, :create_table > def create_table(*args) > table_evolve(*args) > result = old_create_table(*args) > return result > end > end > This looks like alias_method does nothing much more than an assignment. If you want to override a method in a base class then you can do it something like: class SqliteAdapter(BaseClass): old_create_table = BaseClass.create_table def create_table(self, *args) self.table_evolve(*args) result = self.old_create_table(*args) return result 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 If that isn't what you are trying to achieve you'll have to explain more. -- http://mail.python.org/mailman/listinfo/python-list