Determine attributes of calling method

Joe joe.cwikla at gmail.com
Fri Jun 3 16:35:57 EDT 2011


Hello,

I'm trying to implement a way to restrict method usage based on the
caller's attributes.  In the following example I'd like to execute the
server method "bar" only if the caller's method has a "blue" value for
it's color attribute.

The current output is:

blue
red
bar
bar

I'd like it to be:

blue
red
bar

I've worked my way through inspect but that doesn't seem to be the
right approach.

# Example
class Client:

    def __init__(self, server):
        self.server=server

    def foo(self):
        self.server.bar()

    def fu(self):
        self.server.bar()

    foo.__dict__['color']='blue'
    fu.__dict__['color']='red'

class BlueServer:

    def bar(self):
        """
        Goal is to only accept calls from "blue" client methods.
        Don't know how to do it :(
        """
        print "bar"

s=BlueServer()
c=Client(s)
print c.foo.color
print c.fu.color
c.foo()
c.fu()

Thanks for your help!

Joe



More information about the Python-list mailing list