2017-05-12 9 views
0

networkx(nx)グラフが有向グラフかどうかを確認する必要があります。例えば、カスタムオブジェクトタイプ(networkxグラフタイプbool式)の正しいpython bool式は何ですか?

In [70]: g = nx.DiGraph([(0,1), (2,0)]) 

In [71]: type(g) 
Out[71]: networkx.classes.digraph.DiGraph 

In [72]: type(g) == 'networkx.classes.digraph.DiGraph' 
Out[72]: False 

は、そこで問題は、私はそれを動作させるためにライン[72]の右側のために置けばいいのは何ですか?明らかに私は異なるブール値、例えば'digraph.DiGraph' in str(type(g))を行うことができますが、それはもっと一般的な問題です。「カスタムタイプをチェックする方法はブール値である必要がありますか?

+1

をあなたは明らかにそのタイプがインポートされていますネームスペースに 'nx.Digraph'と入力します。正確な型を調べるよりも、 'isinstance(g、nx.Digraph)'としてこれを行うほうがはるかに優れていることに注意してください。 – jasonharper

+0

ありがとう、小さな編集(構文)、する必要があります: 'isinstance(g、nx.DiGraph)' – travelingbones

答えて

1

だから、基本的に、あなたが遭遇している混乱がありますtypeオブジェクトは文字列と等しくありません。代わりに、あなたが使用できます。

type(g) == nx.DiGraph 

を一般的にあなたが見るものの:

type(g) is nx.DiGraph 
しかし、あなたは、あなたが instanceofが必要 サブクラス含めたい場合:

instanceof(g, nx.DiGraph) 
1

isinstance機能を使用します。type(g)タイプオブジェクトは、すなわちクラスオブジェクトですが、'networkx.classes.digraph.DiGraph'文字列あり、かつので

isinstance(g, networkx.classes.digraph.DiGraph)