2013-03-28 5 views
-1

다음과 같은 문제가 있습니다. 키워드 클래스로 사전 정의 된 객체를 수퍼 클래스로 사용하는 객체 클래스가 필요합니다.Python ImportError 키워드 인수

하지만 오류를 받고 있어요 :

ImportError: cannot import name Object 

코드 :

import Object 

class Object: 

    defaultobject = Object('defaultobject', None) 

    def __init__(self, name, superclass = defaultobject): 
     self.__name = name 
     self.__superclass = superclass 
+1

정의 된 동일한 파일에서 클래스를 가져 오시겠습니까? – thegrinner

+0

네, 이렇게하지 않으면 컴파일러가 말합니다 : 정의되지 않은 변수 : Object – user2221323

+0

그 import 문으로 무엇을 목표로합니까? –

답변

3

당신은에 있는 모듈을 가져올 수 없습니다. 당신은 후 클래스 정의 Object() 인스턴스를 이동해야합니다 :

class Object: 
    defaultobject = None 

    def __init__(self, name, superclass=None): 
     self.__name = name 

     if superclass is None: 
      superclass = self.defaultobject 
      if superclass is None 
       # No default set yet, use `self` instead (it'll *be* the default) 
       superclass = self 

     self.__superclass = superclass 

Object.defaultobject = Object('defaultobject', None) 

당신은 항상 클래스 정의에 더 많은 속성을 추가 할 수 있지만, 먼저 필요를 가지고 클래스의 인스턴스를 생성 그것을 정의했다.

superclass is None 춤이 필요합니다. 그렇지 않으면 여기에 catch-22가 있기 때문입니다. 먼저 Object.defaultobject을 설정하지 않고 Object의 인스턴스를 만들 수 없습니다. 아직 기본 설정을 만들지 않았기 때문에 할 수 없습니다.

+0

그리고 어떻게 defaultobject에 액세스합니까 ?? 오류가 발생합니다. 정의되지 않음 변수 : defaultobject – user2221323

+0

@ user2221323 : 아, 서명에서 그 부분을 놓쳤습니다. 업데이트 됨, 대신에 센티넬 기본값을 사용하십시오 ('None'은 여기에서 잘 할 것입니다). –

+0

여전히 작동하지 않습니다./ superclass = self.defaultobject AttributeError : 객체 인스턴스에 'defaultobject'속성이 없습니다. – user2221323

0

이 문제는 일부 하위 클래스에서 가져온 상위 클래스에서 가져 오기 라이브러리를 제거하면 해결할 수 있습니다. 하위 클래스에서 가져 오기 개체를 사용하는 경우 부모 개체를 제거하면 문제가 해결됩니다.