Я пытаюсь предоставить фреймворк, который позволяет людям писать свои собственные плагины. Эти плагины являются в основном производными классами. Мой базовый класс нуждается в некоторых переменных для инициализации, как я могу инициализировать мой базовый класс, не позволяя моему производному классу кормить переменную в инициализации базового класса?инициализировать базовый класс с переменной, не входящей из производного класса
#!/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, так это то, что я не хочу, чтобы пользователь, который пишет плагин быть обеспокоенным.
Я не понимаю ваш вопрос.. Я получаю это, когда создается экземпляр 'UserPlugin', вы не хотите, чтобы создатель плагина должен был пройти путь к конфигу. Но откуда вы хотите, чтобы путь конфигурации появился? Тогда вы хотите иметь путь по умолчанию для конфигурации Кроме того, инициализация вашего базового класса происходит только при создании экземпляра базового класса. Когда вы создаете экземпляр 'UserPlugin', вы _call_' BaseClass .__ init __() 'на нем, но вы инициализируете экземпляр' UserPlugin'. – senderle
Спасибо за перефразирование мой вопрос, потому что это именно так. Я понимаю, что BaseClass инициируется при запуске UserPlugin , Итог - это то, что я хочу, чтобы UserPlugin мог наследовать методы из BaseClass, для чего требуется инициализация переменной, не передавая эту переменную производному классу. Возможно также, что можно забыть о наследовании и сначала инициировать базовый класс, а затем инициировать UserPlugin внутри BaseClass, но я считаю это немного уродливым. –
Но вы все еще не ответили на мой вопрос. Откуда вы хотите получить путь к конфигу? [Я принял дикое предположение] (http://stackoverflow.com/a/9786902/577088). – senderle