저는 사람들이 자신의 플러그인을 작성할 수있는 프레임 워크를 제공하려고합니다. 이 플러그인은 기본적으로 파생 클래스입니다. 내 기본 클래스 초기화하려면 몇 가지 변수가 필요합니다, 어떻게 내 파생 된 클래스를 기본 클래스 초기화에서 변수를 피드하지 않고 내 기본 클래스를 초기화 할 수 있습니까? 이것이 내가 귀찮게 할 수있는 플러그인을 쓰는 사용자가 원하지 않는 무언가 때문에파생 된 클래스에서 오는 변수로 기본 클래스를 초기화하십시오.
#!/bin/python
class BaseClass():
def __init__(self,config):
self.config=config
def showConfig(self):
print "I am using %s" % self.config
class UserPlugin(BaseClass):
def __init__(self,config):
BaseClass.__init__(self,config)
def doSomething(self):
print "Something"
fubar = UserPlugin('/tmp/config.cfg')
fubar.showConfig()
내 목표는 UserPlugin 클래스의 구성 매개 변수를 정의 할 필요가 없도록하는 것입니다.
을 나는 당신의 질문을 이해하지 않는다, 당신은
BaseClass.config
자체의 값을 변경하려는 경우, 당신은 직접 (즉,BaseClass.config = '/foo/path'
에 액세스해야 있음을 유의하십시오.. 나는'UserPlugin'이 인스턴스화 될 때 플러그인 생성자가 설정 경로를 전달하지 않도록하고 싶습니다.하지만 어디에서 설정 경로를 가져 오시겠습니까? 기본 설정 경로를 원하십니까? 또한 기본 클래스를 초기화 할 때만 기본 클래스를 초기화합니다 .'UserPlugin' 인스턴스를 생성 할 때'BaseClass .__ init __()'을 호출하지만'UserPlugin' 인스턴스를 초기화하는 중입니다 – senderle내 질문은 그게 정확히 그거야. 나는 UserClop이 시작될 때 BaseClass가 시작된다는 것을 알고있다. . 요점은 UserPlugin이 파생 클래스에 해당 변수를 전달하지 않고 변수를 시작해야하는 BaseClass에서 메서드를 상속하는 깨끗한 방법을 원한다는 것입니다. 내가 상상할 수있는 것을 잊어 버리고 Baseclass를 먼저 시작한 다음 BaseClass 내부에서 UserPlugin을 시작하는 것도 가능하지만 조금 추한 것 같습니다. –
그러나 당신은 여전히 내 질문에 대답하지 않았습니다. 구성 경로는 어디서 오게할까요? [나는 야생 추측을했다] (http://stackoverflow.com/a/9786902/577088). – senderle