- 252 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 20:43:33.19 ]
- >>251
これはよくはまるポイントかもしれない。 namedtupleはクラスではなくて、tupleを直接継承したクラスを生成する * 関数 * なので。 また、現状では namedtupleのみに 共通するベースクラスがなく、isinstanceでは通常のtupleとの区別が付きません。 (※ ttp://bugs.python.org/issue7796) 例えば今回のケース(_fieldsを使う場合)なら、こうかな if isinstance(obj, tuple): if hasattr(obj, "_fields"): namedtuple用のコード else: 通常のtuple用のコード hasattrは、このケースのみの対策というわけではなく、通常の型を判別して処理を別ける場合でも、 isinstanceの代わりに属性の有無のみでチェックする方法がよく使われます。
|

|