如何确定命名元组是一个namedtuple对象?

时间:2014-06-20 15:08:10

标签: python reflection

我有一个谓词函数,用于确定字典(或实际上任何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

0 个答案:

没有答案