class chainer.utils.type_check.Expr(priority)[source]

式の抽象構文木。

 

このクラスは抽象構文木を表し、値ではありません。 eval() 関数で、実際の値を取得することができます。 __str__() メソッドを用いてシンタックス表現を取得します。各比較演算子(例 ==) は2つの式を比較した結果を表す、新たな Expr オブジェクトを生成します。 

 

Example

x と y を Exprのインスタンスとすると

 

>>> x = Variable(1, 'x')

>>> y = Variable(1, 'y')
>>> c = (x == y)

 

cもExprのインスタンスとなります。これを評価して、値を取得するために、eval() メソッドを呼び出します。

>>> c.eval()

True

 

もとの等式表現を取得するために str 関数を呼んでください。

>>> str(c)
'x == y'

 

実際に式と値を比較可能です。

>>> (x == 1).eval()

True

 

式をブール値にキャストする時、 andのようなブール演算子を使用することはできませんので注意してください。 

>>> z = Variable(1, 'z')

>>> x == y and y == z # この行でエラーが発生する。

Traceback (most recent call last):
RuntimeError: Don't convert Expr to bool.
         Please call Expr.eval method to evaluate expression.

 

Methods

__call__(*args)[source]
__getitem__(key)[source]
eval()[source]

実際の値を取得して構文木を評価する。

この関数の挙動は実装しているクラスに依存します。例えば、バイナリ演算子である + は__add__ 関数を eval() 関数の2つの結果とともに呼び出します。

__eq__(x, y)
__ne__(x, y)
__lt__(x, y)
__le__(x, y)
__gt__(x, y)
__ge__(x, y)
__nonzero__()[source]
__bool__()[source]