オブジェクトが名前付きタプルのインスタンスであるかどうかを確認するにはどうすればよいでしょうか? 質問する

オブジェクトが名前付きタプルのインスタンスであるかどうかを確認するにはどうすればよいでしょうか? 質問する

オブジェクトがインスタンスであるかどうかを確認するにはどうすればいいですか?名前付きタプル?

ベストアンサー1

呼び出し関数 collections.namedtupletupleは、すべての項目が文字列であるタプルである という名前のメンバーを持つ、のサブクラス (他のクラスではない) である新しい型を提供します_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)

これによって誤検知が発生する可能性はありますが、それは誰かがわざわざ多く名前付きタプルに似ていますが、そうではありません;-)。

おすすめ記事