从列表python中获取函数名称

时间:2014-07-10 10:55:10

标签: python

我正在尝试编写一个函数来打印对象的值,但只打印列表中定义的那些值。

import boto.ec2.cloudwatch
conn = boto.ec2.cloudwatch.connect_to_region('ap-southeast-1')
alarms = conn.describe_alarms()
for alarm in alarms:
    print alarm.name

这将返回所有警报的特定值。我怎么想让它以我能够打印列表中定义的所有值的方式工作。这是我想要做的事情

import boto.ec2.cloudwatch
conn = boto.ec2.cloudwatch.connect_to_region('ap-southeast-1')
alarms = conn.describe_alarms()
whitelist = ["name", "metric", "namespace"]
for alarm in alarms:
    print alarm.whitelist[0]

然而,这当然不会奏效。关于什么是最好的方法的任何建议?因此,我能够打印白名单中定义的所有内容。

2 个答案:

答案 0 :(得分:2)

您可以使用getattr(请注意,您指的是属性,或者可能是方法,而不是函数):< / p>

for alarm in alarms:
    for attr in whitelist:
        print getattr(alarm, attr)

getattr采用可选的第三个参数,如果找不到attr的默认值,那么您可以执行以下操作:

for attr in whitelist:
    print "{0}: {1}".format(attr, getattr(alarm, attr, "<Not defined>"))

答案 1 :(得分:0)

您可以使用getattr() built-in function

您的代码看起来像这样:

import boto.ec2.cloudwatch
conn = boto.ec2.cloudwatch.connect_to_region('ap-southeast-1')
alarms = conn.describe_alarms()
whitelist = ["name", "metric", "namespace"]
for alarm in alarms:
    for attribute in whitelist:
        print(getattr(alarm, attribute))