2014-01-24 2 views
5
def addError(self, e): 
    if not isinstance(e, Error): 
     raise ValueError('{0} is not type {0}'.format(e, Error)) 
    self.__errors.append(e) 

메시지 :클래스가 같을 때 isinstance가 false를 반환합니까?

에 ValueError : <class 'api.utils.Error'> 당신은 클래스 자체, 클래스가 아닌 인스턴스를 전달하는 <class 'api.utils.Error'>

+0

waaaaait ... 도대체 : 당신은 대부분 다음과 같은 의미? – user2357112

+0

잠시만 기다려주세요. 인쇄 된 경우 isinstance (e, Error)가 'True'를 반환하지 않는다는 뜻입니까? – aIKid

+0

미안하지만 ... 디버깅을하다가 코드를 붙여 넣었습니다. – slik

답변

8

입력되지 않습니다. 그것은 당신의 문제를 설명합니다.

>>> isinstance(A(), A) 
True 
3

e 클래스 api.utils.Error이 아닌 클래스의 인스턴스 인 : 당신은 아마 원하는 것은

>>> class A: 
    pass 

>>> isinstance(A, A) 
False 

는 인스턴스를 확인하는 것입니다. 인스턴스를 생성 할 수 있습니다.

또한, 당신의 포맷 스트링 버그가 있습니다

'{0} is not type {0}' 

format에 두 번째 인수를 무시하고 두 자리의 첫 번째를 사용합니다.

'{0} is not type {1}' 

파이썬 2.7에

,

'{} is not type {}' 
관련 문제