我正在尝试编写一个函数来打印对象的值,但只打印列表中定义的那些值。
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]
然而,这当然不会奏效。关于什么是最好的方法的任何建议?因此,我能够打印白名单中定义的所有内容。
答案 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))