2017-05-12 3 views
0

networkx (nx) 그래프가 다이 그래프인지 확인해야합니다. 내가 그것을 작동하도록 라인 [72]의 오른쪽을 위해 배치해야합니까 무엇 예를 들어,사용자 정의 객체 유형 (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 

그래서 질문은? 당연히 다른 부울을 수행 할 수 있습니다 (예 : '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)