其他分享
首页 > 其他分享> > 如何检查对象是否是namedtuple的实例?

如何检查对象是否是namedtuple的实例?

作者:互联网

如何检查对象是否是Named tuple的实例?

解决方法:

调用函数collections.namedtuple为您提供了一个新类型,它是元组的子类(而没有其他类),其成员名为_fields,它是一个元组,其元素都是字符串.所以你可以检查这些东西中的每一个:

def isnamedtupleinstance(x):
    t = type(x)
    b = t.__bases__
    if len(b) != 1 or b[0] != tuple: return False
    f = getattr(t, '_fields', None)
    if not isinstance(f, tuple): return False
    return all(type(n)==str for n in f)

有可能从中得到一个误报,但只有当有人不顾一切地制作一个看起来很像命名元组的类型但不是一个;-).

标签:isinstance,python,introspection,namedtuple
来源: https://codeday.me/bug/20190928/1827839.html