2009-10-28 2 views
0

wrapper my_function이 두 개의 다른 함수를 작성하는 대신 클래스 또는 클래스 인스턴스를 수신 할 수있게하려고합니다.param이 클래스 또는 클래스 인스턴스를 포함하고 있는지 확인하는 방법이 있습니까?

>>> from module import MyClass 

>>> my_function(MyClass) 

True 

>>> cls_inst = MyClass() 

>>> my_function(cls_inst) 

True 

문제는 클래스 또는 클래스 인스턴스의 유형을 미리 알 수 없다는 것입니다. 나는받을 것이다. 그래서 예를 들어 isinstance와 같은 함수를 사용할 수 없습니다 ...

매개 변수에 클래스 또는 클래스 인스턴스가 일반적인 방식으로 포함되어 있는지 확인하려면 어떻게 입력합니까?

좋은 생각이야?

+0

당신이이 일을위한 유스 케이스를 제공 할 수 있을까요? 그것은 표면에 많은 의미를 만들지 않습니다. 'my_function (object .__ class__) '를 사용하여 일관성이 유지되는 이유는 무엇입니까? –

답변

7
>>> class A: pass 

>>> isinstance(A, type) 
True 
>>> isinstance(A(), type) 
False 
+0

예는 구식 클래스이지만 새로운 스타일의 클래스에서도 작동합니다. – steveha

+0

내 예제는 py3k입니다.) – SilentGhost

0

type() buitlin 함수를 사용하십시오.

예컨대 :

import avahi 
print type(avahi) 

<type 'module'> 
1
import types 

def myfun(maybe_class): 
    if type(maybe_class) == types.ClassType: 
     print "It's a class." 
    else: 
     print "It's an instance." 
관련 문제