On Sun, 15 Jan 2006 19:23:30 -0800, David Hirschfield <[EMAIL PROTECTED]> wrote:

>I should have explicitly mentioned that I didn't want this particular 
>solution, for a number of silly reasons.
>Is there another way to make this work, without needing to place an 
>explicit "if allowed" around each method definition?
>
Seems like you can
a. define the class with all methods defined within, and use a metaclass to 
prune
   out the ones you don't want, which Alex provided.
b. define the class with conditional execution of the method definitions, which 
you just rejected.
c. define the class with no iffy methods at all, and add them afterwards
   c1. in a metaclass that adds them and possibly also defines them for that 
purpose
   c2. by plain statements adding method functions as class attributes
d. define all the methods normally, but monitor attribute access on the class 
and raise
   attribute error for the methods that aren't supposed to be there.
e. raise an exception conditionally _within_ methods that aren't supposed to be 
there, if called.

What would you like?

BTW, defining the method functions someplace other than within the body of the 
class whose methods
they are to become has some subtleties, since the functions can potentially 
refer to different
global scopes than that of the class (e.g. if you take the functions from an 
imported module)
and/or use closure-defined cell variables (e.g. if the method function is 
defined within a factory function).
This can be used to advantage sometimes, but needs good documentation to be 
clear for the next code maintainer ;-)

I guess I should re-read your original requirements that led to thes design 
ideas.

Regards,
Bengt Richter
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to