2016-04-06 15 views
1

私はPythonを新しい型で拡張していますが、PythonマニュアルのNew Typesセクションを見ると、ブール変換のためのものは何も表示されません。どのようにして私の型をboolに変換するかを指定するにはどうすればよいですか?ネイティブnumpyのタイプ以下の例で例えば カスタムデータ型の `bool`変換を定義する方法は?

は、Pythonと解釈されるためには、何らかの方法

import numpy as np 
if (np.array(False)): 
    print 'hi' 
else: 
    print 'hey' 

バイトコードを見ると、これはPOP_JUMP_IF_FALSEに対応するが、これは、変換ロジックを追跡するのに有用でいないようBOOL。

+0

しかし、 'np.array([True、False]):'は、多くのSOの質問の対象となるエラーを生成します。 – hpaulj

答えて

4

Special Method NamesのPythonドキュメントでは、.__bool__()メソッドがこれを正確に実行していることがわかります。

class MyType(object): 
    def __init__(self, value): 
     self.value = value 
    def __bool__(self): 
     return self.value != 0 

あなたがまだのPython 2.xの上で立ち往生している場合(哀悼の意!)、メソッド名が__nonzero__の代わり__bool__です。

+0

Hm ...上記の例で 'numpy.ndarray 'オブジェクトに属性' __bool __ ''がありませんが、それでも 'if'文内で動作します –

+2

@YaroslavBulatov Python 2ではこのメソッドは' __nonzero __ ) '。 – Reti43

関連する問題