Kevin wrote:
I am fooling around with classes and I was trying to create a very
small one player text adventure. I made a class called commands here
it is:
class Commands:
def __init__(self):
pass
def quiting(self):
sys.exit()
def look(self):
print "\nNot working yet!\n"
<snip more methods>
while 1:
com = Commands()
a = ['look',
'get',
'take',
'kill',
'drink',
'eat',
'eq',
'help',
'quit']
commandl = raw_input(">>>: ")
if commandl not in a:
print "\nI don't understand that command?\n"
I want to beable to type in a command from the list at the prompt and
have it call one of the functions from the class. I was looking for a
shorter way to write it but the only way I can think of is with an if
statment for each command. Is there a better way or shorter way to do
this?
You can use introspection to do this:
cmd = getattr(com, commandl)
cmd()
In fact you could use introspection to replace the list a:
while 1:
com = Commands()
commandl = raw_input(">>>: ")
if hasattr(com, commandl) and iscallable(getattr(com, commandl)):
cmd = getattr(com, commandl)
cmd()
else:
print "\nI don't understand that command?\n"
You can read a bit more about getattr() and hasattr() here:
http://docs.python.org/lib/built-in-funcs.html
Kent
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor