2010-03-17 5 views
-3

이 오류가 발생하는 이유는 무엇입니까?누군가이 오류의 의미를 정확히 설명 할 수 있습니까? TypeError : issubclass() arg 1은 클래스 여야합니다.

+0

오류가 꽤 분명해 보입니다. 아마도 당신은 작동해야한다고 생각하는 코드를 게시해야하지만 그렇게하지 않아야합니다. –

+0

또한'issubclass'를 사용하는 이유는 매우 적습니다. –

+0

대신에 isinstance()를 사용하고 싶었던 것일까 요? –

답변

2

이는 사용자가 issubclass()에 대한 인수로 클래스를 제공하지 않는다는 것을 의미합니다. 두 인수 모두 클래스 여야합니다. 두 번째 인수는 클래스의 튜플이 될 수도 있습니다.

이 오류가 발생하는 코드를 표시하면 Google에서 도움을 드릴 수 있습니다. documentation에서


:

issubclass(class, classinfo)
Return true if class is a subclass (direct or indirect) of classinfo . A class is considered a subclass of itself. classinfo may be a tuple of class objects, in which case every entry in classinfo will be checked. In any other case, a TypeError exception is raised.

+0

@Felix : 클럽 클래스와 매니저 class.Club 클래스에는 관리자 클래스의 인스턴스를 저장해야하는 속성 관리자가 있습니다.관계에 대한 함수를 작성했습니다.이 함수는 issubclass 에러가 발생한다고 생각합니다. – gizgok

+0

@ gizgok : 코드가 없으면 도움을 받기가 정말로 어렵습니다. –

5

명 말했듯이, issubclass()의 2 개 인자 클래스, 객체의없는 경우이어야한다. 키가 다른 코멘트에서 언급 한 바와 같이, 호출하는 것과 인 issubclass() 기능을 사용하기 위해 인스턴스의 유형을 얻을 수있는 type() 기능의 사용이

>>> issubclass(1, int) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: issubclass() arg 1 must be a class 
>>> issubclass(type(1), int) 
True  
>>> isinstance(1, int) 
True 

입니다 :

이 샘플을 고려 isinstance()

+0

물론 클래스는 * 객체입니다. –

+0

글쎄, 당신 말이 맞아 ... 나는 파이썬에서 확실한 초보자를 혼동하고 싶지 않다. 나는 '객체의 인스턴스'를 사용해야했다. (내가 틀렸다면 나에게 맞춰라.) –

0

기본적으로이 방법은 첫 번째 매개 변수가 두 번째 매개 변수의 하위 클래스인지 여부를 알려줍니다. 그래서 당연히 두 매개 변수가 모두 클래스가되어야합니다. 전화를 걸었을 때 매개 변수없이 issubclass을 호출 했으므로 통역사를 혼란스럽게합니다.

issubclass을 호출하는 것은 인터프리터에게 "이 클래스는이 다른 클래스의 하위 클래스입니까?"라고 묻는 것과 같습니다. 그러나 두 클래스를 제공하지 않았기 때문에 기본적으로 인터프리터에게 질문했습니다. "이봐 요, 저는 당신에게 아무것도 보여주지 않겠지 만, 그것이 서브 클래스인지 말해주십시오." 이것은 통역사를 혼란스럽게 만들고 이것이 여러분이이 오류를 얻는 이유입니다.

관련 문제