如何使用词典使功能易于访问

时间:2016-06-28 20:07:27

标签: python python-3.x

我之前宣布了3个功能,这只是一个愚蠢的基于文本的cookie Clicker-esque游戏。

dostuff={"" : turn() , "help" : helpf() , "invest" : invest() }
while done != True:<br>
    do = input("What do you want to do? ")
    do = do.lower()
    if do == "" or do == "help" or do == "invest":
        dostuff[do]
    elif do == "quit":
        done = True

因此,当我使用dostuff["turn"]时,它什么都不做(该函数应该打印一些东西)。我对其他选项也有同样的问题。

1 个答案:

答案 0 :(得分:6)

你的括号必须在dict中省略,然后放在dict调用的末尾。你定义一个函数,它成为一个python对象。使用dict引用该对象,然后使用对象引用,后跟括号调用该函数:

def one():
    print("one")

def two():
    print("two")

do_stuff = {
    "one": one,
    "two": two
}

do_stuff["one"]()

打印:

"one"

通过熟悉python的内置函数,您可以将字符串输入执行调用的概念更进一步。

https://docs.python.org/2/library/functions.html

例如,您可以使用getattr方法创建一个类并使用基于文本的输入调用其方法或属性:

class do_stuff():
    def __init__(self):
        pass

    def one(self):
        print("one")

    def two(self):
        print("two")

doer = do_stuff()
inp = "one"

getattr(doer, inp)()

prints-&GT;

"one"