[viff-devel] Accessing functions in Protocol from outside
Martin Geisler
mg at lazybytes.net
Wed May 13 05:31:11 PDT 2009
Håvard Vegge <havardv at stud.ntnu.no> writes:
Hi Håvard, good to hear from you!
> I have a program with two classes (as outlined below). From the
> class MyFunctions I would like to call a function in the class
> Protocol, is this possible? Normally one would save the instance of
> a class p = Protocol() and then be able to call p.some_function()...
Right, that is the correct way to invoke a method on an object.
> But I don't see how this is possible because the Protocol is started
> as a callback. Does anyone have some suggestions?
>
> Best regards, Håvard
>
>
> class MyFunctions:
> def initiate_computation(self, code):
> // want to call Protocol.some_function(code)
You must then have access to the Protocol object. Let's pass that as
another parameter:
def initiate_computation(self, protocol, code):
and then do
protocol.some_function(code)
> class Protocol:
> def __init__(self, runtime):
> ...
Somewhere -- maybe here -- you must invoke the initiate_computation
method in MyFunctions. Otherwise it cannot wish to call the
Protocol.some_function method.
If __init__ is that place, then do it like this:
myfunc = MyFunctions()
myfunc.initiate_computation(self, "code...")
Here self is a reference to the Protocol object, exactly what
initiate_computation needs in the MyFunctions class.
By the way, if MyFunctions only contain functions, then you might not
need a class at all. Python is much more free-form than, say, Java in
this way -- in Java you must put "static" functions into a class,
whereas you can just put them in a module in Python.
I hope that makes some sense, otherwise please ask again :-)
--
Martin Geisler
More information about the viff-devel
mailing list