2012-03-13 6 views
10

로 정의 된 클래스의 컬렉션이 없습니다형식 오류 : 메타 클래스 기지를 호출 할 때 오류가 새로운 스타일의 클래스는 고전 기지

TypeError: Error when calling the metaclass bases 
    a new-style class can't have only classic bases 
:

실행
class A(): 
    @staticmethod 
    def call(): 
     print('a') 

class C(type): 
    def __repr__(self): 
     return 'somename' 

class B(A): 
    __metaclass__ = C 

    @staticmethod 
    def call(): 
     print('b') 

    def boundcall(self): 
     print('bound') 

이 오류를 제공합니다

나는 내 코드에서 B의 알려진 문자열 표현을 갖기 위해 메타 클래스 (나는 생각한다)가 필요하다. 그 이유는 그 점 옆에 있지만 향후 업데이트에 크게 도움이 될 것입니다.

그래서 B의 메타 클래스로 C가 필요하고 B가 A의 서브 클래스가 될 것이라고 가정하면 누군가가 나에게 무엇이 잘못 될지 알려주고 오류를 제거하기 위해 내가하는 일을 어떻게 바꿀 수 있습니까?

답변

16

문제는 그것이 있어야 라인

class A(): 

입니다 :

class A(object): 

그런 식으로, 당신은 새로운 스타일의 클래스합니다. 빈 괄호는 아무 의미가 없으며 여전히 스택 오버 플로우 (stackoverflow)와 모든 곳에서 계속 볼 수 있습니다. 왜, 왜?