オブジェクトがインスタンスであるかどうかを確認するにはどうすればいいですか?名前付きタプル?
ベストアンサー1
呼び出し関数 collections.namedtuple
tuple
は、すべての項目が文字列であるタプルである という名前のメンバーを持つ、のサブクラス (他のクラスではない) である新しい型を提供します_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)
これによって誤検知が発生する可能性はありますが、それは誰かがわざわざ多く名前付きタプルに似ていますが、そうではありません;-)。