Yaşar Arabacı wrote:
Hi

I am trying to do something like this:


If you are trying to write a mini-language, the ``cmd`` and ``shlex`` modules in the standard library may be useful to you.


#!/usr/bin/env python
def command_dispatcher():
    "Takes comman line arguments and executes regardin method"
    command = raw_input(">>>")
    args = command.split(" ")
    args[0].args[1]


The error you get tells you exactly what is wrong:

AttributeError: 'str' object has no attribute 'args'


When you split the line, you get a list of strings. You extract the first string using args[0], and then look up the attribute "args" on that string, and finally look up the second element of that result. But strings don't have an attribute called args.

Try this instead:

getattr(args[0], args[1])

When you do that, you'll run into a bunch of new and exciting errors, starting with the fact that nothing appears to happen. Try it and see.

What you will eventually need to do is:

* create a class instance and store it somewhere
* call the method on the class instance
* print its output

none of which is yet done by your script. So far, all it does it try to look up a method on a class, then throw the result away without doing anything :)


class calculate:
    def bundle(self):
        print __class__
command_dispatcher()


calculate.bundle won't do anything except fail, because __class__ is not a local variable.

It's better to have the methods return a result, rather than print, and then have the command_dispatcher responsible for printing it. That lets you chain methods to make more powerful functions.


Good luck, and have fun!



--
Steven

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to