CONSTRUCT - Python's way of Ruby's "alias_method"
Ilias Lazaridis
ilias at lazaridis.com
Thu Jun 8 08:28:39 EDT 2006
I have a few small questions subjecting python functionality, most
importantly the "alias_method".
-
*IMPORT*
I would like to know, if this construct is valid, or if it can result in
problems (that I do not see as a newcomer):
1082 try:
1083 from django.rework.evolve import evolvedb
1084 except ImportError:
1085 def evolvedb():
1086 "Evolve Command Dummy"
1087 print 'Command evolvedb not imported'
1088 evolvedb.args =''
-
*PATCHING*
A second problem is, how to make the setup for users (testers) more
convenient. Is there e.g. any mechanism to apply a patch in an automated
manner (e.g. using a python library)?
-
*ALIAS_METHOD*
The django commands are hard-coded:
http://code.djangoproject.com/browser/django/trunk/django/core/management.py#L1180
thus elegant/dynamic additions of commands seem not possible.
Another possibility is to enlink (hook?) the functionality into an
existent function
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:
(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
http://lazaridis.com/case/persist/og-evolve.rb
-
-
-
If anyone is interested to verify the results in order to stabelize the
simple schema evolution support for django, please review the results
here:
http://case.lazaridis.com/wiki/DjangoProductEvaluation
http://case.lazaridis.com/wiki/DjangoSchemaEvolution
http://case.lazaridis.com/browser/django/rework/evolve.py
http://case.lazaridis.com/browser/django/rework/add_evolvedb_command.diff
.
--
http://lazaridis.com
More information about the Python-list
mailing list