У меня есть иерархия классов, которые наследуют друг от друга, что выглядеть примерно так:Как использовать полученный переменный класс в методе BaseClass
class BaseClass(object):
def __init__(self):
self.localLog = logging.getLogger(testName)
self.var1 = 'a'
def printVar(self):
print self.var1
class SubClass1(BaseClass):
def __init__(self):
self.var1 = 'b'
super(SubClass1, self).__init__()
class SubClass2(SubClass1):
def __init__(self):
self.var1 = 'c'
super(SubClass2, self).__init__()
Теперь я хочу, чтобы создать экземпляр SubClass2
и вызвать BaseClass
printVar
метод с SubClass2
местным var1
переменная:
obj = SubClass2()
obj.printVar()
То, что я хочу, чтобы это произошло для переменной c
подняться вплоть до BaseClass
и быть передан методу printVar
. Однако я получаю вместо этого переменную a
.
Я понимаю, что я получу желаемый результат, удалив строки super
, но я должен оставить их доступными к переменной self.localLog
во всех классах наследования.
Есть ли способ достичь того, что я хочу, или я должен просто поддерживать локальный метод printVar
для каждого класса?
Почему вы устанавливаете 'self.var1' ** перед ** вы называете' super() '? Выполнение означает, что определение суперкласса может переопределить его. –
@CharlesDuffy Вы абсолютно правы! Моя мисс. Благодаря! –