2016-03-24 18 views

答えて

2

が、あなたはできません任意の名前付きタプルの空のインスタンスを作成します。なぜなら、名前付きタプル型を作成するときには、先頭の要素の数を指定する必要があるからです。空のnamedtupleを持つことができる唯一の方法は、常に空の名前付きタプル型を持つことです。

+0

ので、明確にするために、便利な 'namedtuple'sは常にtruthyですか? – user200783

+0

@PaulBaker:はい、いつも空ではないからです。 – BrenBarn

3

はい、一般的には、namedtupleの各値の名前を指定するので、実際には起こりません。何の名前を指定しないと、あなたは空のタプル型を作成できるようになるが、そのインスタンスは常にが空になりますので、このようなタイプは、非常に有用ではない:はい、理論的には

>>> empty = collections.namedtuple("empty", []) 
>>> empty() 
empty() 
>>> bool(empty()) 
False 
2

はい。これは、名前付きタプルクラスを調べることで確認できます。

Python 3.3以降で._sourceverbose=Trueというオプションを使用して、名前付きタプルクラスのソースコードを表示する方法の1つは、namedtuple()です。名前付きタプルがtupleまで拡張され、__nonzero__()または__len__()メソッドをオーバーライドしないことがわかります。つまり、彼らは考えたようにtupleと同じロジックを使用しています。

また、名前付きタプルクラスの__nonzero__および__len__属性をチェックすることもできます。あなたはそれが何を持っていることを__nonzero__属性が定義されて見ていない、と__len__属性がtupleためのものと同じであることになります。

>>> A = namedtuple('A', ['x']) 
>>> A.__len__ == tuple.__len__ 
True 
関連する問題