我正在对我从客户端应用程序(此代码所在的地方)调用的不同应用程序中的api端点进行向后不兼容的更改。我需要在一段时间内支持它处理前一种情况(数据位于"分类账"级别)和新情况(数据位于"配置文件"分类账)。
下面的代码可以从任何一个地方抓取它,但我有一个唠叨的感觉,必须有一个更python的方式来做到这一点。什么好主意吗?
class Profile(object):
@property
def account_owner(self):
owner_data_from_ledger = self.account.ledger.data.get('owner', None)
owner_data_from_profile = self.data.get('owner', None)
owner_data = owner_data_from_ledger if owner_data_from_ledger else owner_data_from_profile
if owner_data:
return Human(owner_data)
return None
代替
owner_data = owner_data_from_ledger if owner_data_from_ledger else owner_data_from_profile
你可以这样写,这是等价的:
owner_data = owner_data_from_ledger or owner_data_from_profile
也可以缩短整段:
owner_data_ = self.account.ledger.data.get('owner',
self.data.get('owner', None))
您也可以省略上面末尾的None
,因为这是该参数的默认值。