Are you changing the definition of the function each time, or just
effectively making duplicates of some common function under different names?
You can do things like this:
def make_funct(blah):
def inner():
print blah
return inner
Then make a few of them with different names and pre-assigned config via
the parameters:
f1 = make_funct('Hello World!')
f2 = make_funct('Foo')
And call 'em (with no parameters):
f1() => prints Hello World!
f2() => prints Foo
Perhaps that's not what you're looking for though?
In terms of performance, I suggest trying out both approaches and
measuring the time taken to do it a few hundred or thousand times and
compare.
Regards
Phil
On 16/04/2012 17:55, Arruda wrote:
Hummm, I see, thanks for that, I didn't know about type.
And is there a way to generate functions too?(I was also doing it
using exec).
And do you have any idea of how can I see the difference in
performance when using one or the other?
Thanks.
Em segunda-feira, 16 de abril de 2012 13h45min58s UTC-3, Jefferson
Heard escreveu:
Check https://github.com/JeffHeard/ga_dynamic_models
<https://github.com/JeffHeard/ga_dynamic_models>. It may be
similar to what you're looking for. Even if you don't want the
code, you can see a way of dynamically generating models.
On Mon, Apr 16, 2012 at 12:40 PM, Philip Mountifield
<pmountifi...@formac.net <mailto:pmountifi...@formac.net>> wrote:
Did you know that you can use the type function to dynamiclly
generate a class definition?
See
http://docs.python.org/library/functions.html?highlight=type#type
<http://docs.python.org/library/functions.html?highlight=type#type>
From the example:
>>> class X(object):
... a = 1
Is exactly the same as doing...
>>> X = type('X', (object,), dict(a=1))
No exec required...
Regards
Phil
On 16/04/2012 17:19, Arruda wrote:
I'm doing something like this to generate some
models dynamically:
SIMILAR_MODELS_TEMPLATE=
"""
@some_decorator
class %(PREFIX)sModel (Some_Abs_model):
\"""%(DESCRIPTION)s
\"""
pass
"""
then I have a factory:
def similar_models_factory(prefix,description):
format_dict = {
'PREFIX' : prefix,
'DESCRIPTION' : description,
}
cls_name = "%sModel" % prefix
cls_source = SIMILAR_MODELS_TEMPLATE % format_dict
exec(cls_source)
new_cls = locals().get(cls_name)
return new_cls
And finally I have in the models.py:
from my_factories import similar_models_factory
SIMILAR_MODELS_LIST =(
{'prefix': 'Foo', 'desc' : 'Foo model and etc..',},
{'prefix': 'Bars', 'desc' : 'Bars model and etc..',},
.....
)
for smodel in SIMILAR_MODELS_LIST:
cls = similar_models_factory(smodels['prefix'],
smodels['desc'])
vars()[cls.__name__] = cls
And this gives my just what I want, but I read somewhere that
if you do:
exec ""
It would be too costly, and I would like to know if this
would have some heavy load in my project(and if please, how
can I calculate this, to compare?)
Thanks!
--
You received this message because you are subscribed to the
Google Groups "Django users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/django-users/-/64JCLnsIFu0J
<https://groups.google.com/d/msg/django-users/-/64JCLnsIFu0J>.
To post to this group, send email to
django-users@googlegroups.com
<mailto:django-users@googlegroups.com>.
To unsubscribe from this group, send email to
django-users+unsubscr...@googlegroups.com
<mailto:django-users+unsubscr...@googlegroups.com>.
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
<http://groups.google.com/group/django-users?hl=en>.
--
Philip Mountifield
Formac Electronics Ltd
tel+44 (0) 1225 837333
fax+44 (0) 1225 430995
pmountifi...@formac.net <mailto:pmountifi...@formac.net>
www.formac.net <http://www.formac.net>
www.telgas.net <http://www.telgas.net>
--
You received this message because you are subscribed to the
Google Groups "Django users" group.
To post to this group, send email to
django-users@googlegroups.com
<mailto:django-users@googlegroups.com>.
To unsubscribe from this group, send email to
django-users+unsubscr...@googlegroups.com
<mailto:django-users%2bunsubscr...@googlegroups.com>.
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
<http://groups.google.com/group/django-users?hl=en>.
--
You received this message because you are subscribed to the Google
Groups "Django users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/django-users/-/pxR15NDv5RUJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.
--
Philip Mountifield
Formac Electronics Ltd
tel +44 (0) 1225 837333
fax +44 (0) 1225 430995
pmountifi...@formac.net
www.formac.net
www.telgas.net
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.