下面的代码片段正在生成“奇怪”的输出:
for s in servers:
vo = ss.getServerVO(s)
values = []
for f in voFields:
attribValue = getattr(vo, f)
values.append(attribValue)
customValues = ss.getCustomFields(s)
for f in customFields:
values.append(customValues[f])
# Convert all values to string before writing
values = map(str, values)
csvFile.writerow( values )
对于customFields
字典中的一些-not all-items,我得到以下输出:
要使绑定方法执行/将其结果放入我的values
字典,我需要做什么?在
(特定上下文是针对HP Server Automation API编写PyTwist脚本)
如果绑定方法是一个,可以尝试调用它:
当然,问题在于设计选择(由HP或其他任何人)将“访问器”与其他类型的值混合使用访问器不是一个好的python选择,应该用属性来代替(在需要时,此“调用”会自动为您实现)。这个建议是关于一种可能的方法来解决这个糟糕的设计选择。在
只是尝试调用,并检查如果值不可调用(或没有参数不可调用)时可能导致的TypeError比使用
callable
或检查__call__
特殊方法要好,因为这些检查永远不会告诉您“无参数调用”是否正常。因此,与Python中的通常情况一样,“通过许可请求原谅”更好:尝试该操作,捕捉可能的错误(“请求原谅”),而不是在尝试之前尝试检查该操作是否允许(“ask permission”)。在相关问题 更多 >
编程相关推荐