2010-02-22 3 views
2

그냥왜 클래스 생성 오류

def func(*args, **kwargs): 
    print args, kwargs 

class Klass(func): pass 

가 발생 클래스 주위에 놀 발생 오류

TypeError: Error when calling the metaclass bases function() argument 1 must be code, not str

이, 난 아무데도 더 str을 전달하지하고 무엇을 의미합니까? 그렇습니다. 저는베이스에서 클래스를 통과해야합니다.하지만 왜이 오류가 아닌 오류가 발생하지 않았습니까?

+0

제목과 질문의 대부분은 당신이 왜 이해가 안 제안 이 상황이 발생하지만 오류 메시지의 텍스트가 다른 이유는 무엇입니까? –

+0

예 "함수가 클래스 기반이 될 수 없다"는 대신에 왜 그런 비밀스러운 오류가 발생하는지 이해하지 못합니다. 왜 그런 비밀스러운 오류가 발생했는지 알고 싶습니다. – user232137

+0

Python은 모든 종류의 cruddy 오류를 발생시킵니다! –

답변

2

이 같은 문제가 Error when calling the metaclass bases: function() argument 1 must be code, not str 애매한 MSG

http://bugs.python.org/issue6829

질문에 대한 이유는 여기를 참조하십시오.

편집 : 플레이 주위에 당신이 트위스트 방식으로 작동하도록 메타 클래스를 사용할 수 있지만

)

def func(name, klassDict): 
    return type(name,(), klassDict) 

class MyMeta(type): 
    def __new__(self, name, bases, klassDict): 
     return bases[0](name, klassDict) 

class Klass(func): 
    __metaclass__ = MyMeta 

print Klass