By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,271 Members | 1,722 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,271 IT Pros & Developers. It's quick & easy.

AOP and metaclasses

P: n/a
Im trying to use AOP techniques on python but, even if I understand
the idea behind metaclasses, I cant find a way to use AOP in a dynamic
way.

What im trying to do is to weave an aspect to a class at runtime, but
i don't want to include any special code or definition in the class
itself. Also, i want to do
it just for some particular classes. Is there any way to do this?

I know its possible to apply an aspect to all the classes by
redefining __metaclass__, and that I can do the same with a single
class by assigning to __metaclass__ inside the class definition.
However, I want to avoid the last step, so i can apply the aspect to
any class.

thanks!!

saludos! santiago.
Jul 18 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Santiago Aguiar wrote:
I know its possible to apply an aspect to all the classes by
redefining __metaclass__, and that I can do the same with a single
class by assigning to __metaclass__ inside the class definition.
However, I want to avoid the last step, so i can apply the aspect to
any class.


If one class has a __metaclass__ inside its definition, its subclasses will
use the same metaclass (unless they have another __metaclass__ in their
defintion). So you could define one class and use it as a base for the
specific classes that you want to affect.

--
Shalabh
Jul 18 '05 #2

P: n/a
"Santiago Aguiar" <sa***@netlabs.com.uy> wrote in message
news:9b**************************@posting.google.c om...
Im trying to use AOP techniques on python but, even if I understand
the idea behind metaclasses, I cant find a way to use AOP in a dynamic
way.

What im trying to do is to weave an aspect to a class at runtime, but
i don't want to include any special code or definition in the class
itself. Also, i want to do
it just for some particular classes. Is there any way to do this?

I know its possible to apply an aspect to all the classes by
redefining __metaclass__, and that I can do the same with a single
class by assigning to __metaclass__ inside the class definition.
However, I want to avoid the last step, so i can apply the aspect to
any class.

thanks!!

saludos! santiago.


I believe there is at least one AOP project out there somewhere.
I don't think you want to use metaclasses, though. If I wanted
to do that, I'd look at using descriptors, and installing them at
run time when I found I wanted to do the cut.

However, I'm not a big fan of AOP. I got my taste of intercepting
someone else's entry points in the '70s when I was hacking MVS.

John Roth
Jul 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.