2017-10-31 18 views
1

私はそうのようなnamedtupleを持っている:私は行うことができるようにしたいものを名前付きタプルにメタデータを追加できますか?

tup = namedtuple(
    'MyData', [ 
     'field_1', 
     'field_2 
    ]) 

は、フィールドが英数字であるかどうかを知るために、例えば、各値にメタデータを添付してある。

tup = namedtuple(
    'MyData', [ 
     {name:'field1', metadata: {is_alpha: True}}, 
     {name:'field2', metadata: {is_alpha: False}}, 
    ]) 

私はこのようなインタフェースを定義しているドキュメントでは何も見つけられませんが、もし可能であればあなたが知っているかどうか疑問に思っています。ありがとう!

+1

ドキュメントにない場合... – wwii

+0

質問はpython2に限定されていますか? – loxaxs

答えて

0

名前付きタプルではこれを上記のように正確にはサポートしていませんが、それはクラスなのでtupが定義された後に、単にtup.field1_is_alpha = Trueのようなものを追加するだけでプロパティを追加できます。

別の潜在的な解決策は、次のような別のタプル(またはnamedtupleまたはクラス)にtupの各フィールドを設定することである..

t1 = tup((1,True), (5,False))

ここでの欠点は、メタデータは、クラスの各インスタンスに移行することです、クラスそのものではありません。

+0

さらに、 'namedtype()'クラスを自分のカスタマイズしたバージョンの基本クラスとして使うことができます。 – martineau

関連する問題