这是我的代码:
args = [“f_name”, “l_name”, “age”]
payload = {}
if hasattr(self,”f_name”):
payload[‘f_name”] = self.f_name
elif hasattr(self,”l_name”):
payload[‘l_name’] = self.l_name
elif hasattr(self,”age”):
payload[‘age’] = self.age
我是Python的新手,是否想知道这是最好的方法,还是可以用更Python化的方式来做到?
答案 0 :(得分:1)
由于属性与args
列表中的名称匹配,所以为什么不像这样遍历整个事情:
args = ["f_name", "l_name", "age"]
payload = {}
for arg in args:
if hasattr(self, arg):
payload[arg] = getattr(self, arg)
如果您想要一个更简洁的版本(尽管就可读性而言,这尚有争议),则可以使用类似字典理解的功能:
args = ["f_name", "l_name", "age"]
payload = { arg:getattr(self,arg) for arg in args if hasattr(self,arg) }
答案 1 :(得分:1)
您可以使用dict理解:
rescue ::Lib::Commands::BaseException => exception
error.call(params[:id], exception.message)