|
Graham Dumpleton
grahamd at dscpl.com.au
Sat Jul 15 18:13:00 EDT 2006
On 15/07/2006, at 11:55 PM, Sanjeev Divekar wrote:
> Hi guys
>
> How can i use Classes in mod_python.
> **********************************************************************
> ***
> class myclass:
> def __init__():
> return "Hello"
>
> def index(req,para=''):
> tmpl = psp.PSP(req, filename='a.html')
> tmpl.run(vars={'para':para})
> return
>
> def show_data(req, para):
> msg = "Your first name is " + para[0]
> index(req, para=msg)
> return
> **********************************************************************
> ***
> Any good documentation/ebook/sample app on mod_pythong
Ensuring you are using mod_python 3.2.8 or later, you can rewrite the
above sort of like the following.
class myclass:
def _index(req,para=''):
tmpl = psp.PSP(req, filename='a.html')
tmpl.run(vars={'para':para})
def __call_(req,para=""):
self._index(req,para)
def show_data(req, para):
msg = "Your first name is " + para[0]
self._index(req, para=msg)
index = myclass()
Now, it is a bit unclear from your code what you actually expected
to be called
so to explain briefly.
1. Your code seemed to be tailored to using mod_python.publisher, so you
must be using that in example I present.
2. You must use mod_python 3.2.8 or later as earlier versions can
complain
if None is returned from function.
3. You must actually create an instance of your class. Here I have
named the
instance of the class "index" so that that is where the default URL
will match.
Thus if this was in file "example.py", the URL 'example.py' would
invoke the
__call__() method. In other words, the class instance must be a
callable object.
If the URL is 'example.py/show_data', then the 'show_data()' method
is called
instead.
4. I couldn't map your originally constructor to anything as not
clear when
you expected it to be called.
In short, you need to create an instance of the class and once you
have done
that URLs will magically map to member variables and member functions of
the class instance. If you want something to be hidden, you should
prefix the
name of it with an underscore. Exception is '__call__()' method which
is special
and applied when URL is mapped to object instance itself.
Go back and review the mod_python.publisher documentation on the
mod_python web site and see if it makes more sense now.
Graham
|