我有一个谓词函数,用于确定字典(或实际上任何collections.abc.Mapping
)是否具有 shnudliwutz 特征。
非映射对象永远不会拥有它。
现在我想扩展该函数,以便它接受命名元组(collections.namedtuple
- 生成的类的实例),并将它们视为相应的字典。
但是我怎么识别一个命名的元组?
我能找到的最佳解决方案(在Python3中)如下所示,但肯定有一个更好的解决方案吗?
def is_shnudliwutz(mydict):
if isinstance(mydict, tuple) and isinstance(mydict.__dict__, collections.abc.Mapping):
mydict = mydict.__dict__ # treat named tuple like its dictionary
if not isinstance(mydict, collections.abc.Mapping):
return False
... # now do your work