如何打印一个包含函数名的字典?

时间:2016-07-12 11:04:03

标签: python function dictionary printing

我想使用这个字典打印函数名称 -

class Foo(models.Model):
    var1 = models.CharField(max_length=30)
    var2 = models.CharField(max_length=30)

    def method1(self, input1):
        -- do something based on input1, var1, var2 --
        return result

我试过这个(从答案中获取)

objects = Foo.objects.filter(var1 = a)
for obj in objects:
    json = {'var1': obj.var1, 'var2': obj.var2, 'method': obj.method1() }

正在调用该函数(循环的第二行) 但是这段代码给出了输出 -

def pressKey() :
    print "is pressed"  
def userLogin() :
    print "Code to login to <Server Name> with <username>"
act={'Login':userLogin,'press':pressKey}

我希望输出为 -

for key, value in act.iteritems() :
    print value,'()\t',
    act[key]()

请帮助我怎样才能得到它!。提前感谢你。

2 个答案:

答案 0 :(得分:1)

如果你知道它们都是函数,你可以使用__name__属性来获取函数的名称:

for key, value in act.iteritems():
    print value.__name__, '()\t', 
    act[key]()

请注意,您实际上不需要key,因为您可以使用value()代替act[key](),这也会稍微提高效率:

for value in act.itervalues() :
    print value.__name__, '()\t',
    value()

答案 1 :(得分:1)

试试这个:

def pressKey() :
    print "is pressed"  
def userLogin() :
    print "Code to login to <Server Name> with <username>"
act={'Login':userLogin,'press':pressKey}
for key, value in act.iteritems() :
    print value.__name__,'()\t',
    act[key]()