2010-06-22 9 views
1

A이 작성 될 때 이름이 아직 알려지지 않은 클래스 B을 상속해야하는 클래스 A이 있습니다. A이 상속되지 않는다고 선언 할 수 있으며 A의 인스턴스 생성 중에 B을 기본 클래스로 추가 할 수 있습니까? 예 :Python에서 동적으로 상속을 설정합니다.

먼저 파일

class B: 
    def __init__(self): 
    self.__name = "Class B" 

    def name(self): 
    return self.__name 

두 번째 파일

class A: 
    def __init__(self): 
    self.__name = "Class A" 

# At some point here, the appropriate module name and location is discovered 
import sys 
sys.path.append(CustomModulePath) 
B = __import__(CustomModuleName) 

magic(A, B) # TODO What should magic() do? 

a = A() 
print a.name() # This will now print "Class A", since name() is defined in B. 
+2

왜 이렇게해야하는지 설명 할 수 있습니까? – danben

+0

이 응용 프로그램에서는 일반 클래스 이름이 아닌 응용 프로그램 별 메타 데이터를 기반으로 클래스를 조작해야합니다. – dpq

답변

2

그래, 당신이 메타 클래스와 함께이 작업을 수행 할 수 있습니다. 머리를 감싸는 것이 가장 쉬운 주제는 아니지만 일을 할 것입니다. 그 (것)들에 관하여 Stack Overflow 질문에는 좋은 정보가 있고 나는 또한 도울지도 모른 IBM article를 찾아 냈다처럼 본다. 공식 Python 문서의 어딘가에 그들에 관한 섹션이 있지만 어디에서 온전히 따돌릴 수는 없습니다.

+0

SO 질문에는 특히 상속을 망쳐 놓는 방법에 대한 예제가 있으므로 확실하게 살펴보십시오. – Claudiu

+0

메타 스케치처럼 보이는 것이 정확히 필요한 것입니다. 덕분에 많이 감사합니다! – dpq

관련 문제