Как сделать переменную метода доступной для унаследованного подкласса? - PullRequest
0 голосов
/ 15 марта 2019

Попытка вызвать переменную метода суперкласса в подклассе. Возможно ли это, если это возможно, является хорошей практикой или проектом?

Я написал пример кода для выполнения потока.Ниже приведен код

class bar_for_foo_mixin():
    def __init__(self):
        self.z =0

    def bar(self, q):
        x=2
        y=8
        bar_for_foo_mixin.z= x+y+q
        print(bar_for_foo_mixin.z)

    def extented_bar(self):
        self.bar(10)


class myfoo(bar_for_foo_mixin):
    def __init__(self):
        super(myfoo, self).__init__()
        print("hello",self.z)


class oldFoo():
    def __init__(self):
        self.var = bar_for_foo_mixin()

        self.var.bar(10)

Теперь, как я могу сделать значение Z и сделать его полезным в подклассе?Но если Вызовите метод extended_bar() в подклассе, приведенный выше код работает нормально, но есть ли способ сохранить переменную метода суперкласса и использовать ее в подклассе?

Метод панели вызова третьего класса. Ожидаемый вывод на печать.Z vaue должен хранить вычисления, сделанные в методе суперкласса bar.

hello 20

1 Ответ

2 голосов
/ 15 марта 2019

Вы можете заставить метод __init__ подкласса вызывать метод базового класса '__init__ с помощью функции super():

class myfoo(bar_for_foo_mixin):
    def __init__(self):
        super().__init__()
        print("hello",self.z)

Более того, поскольку z инициализируется как переменная экземпляра, ваша функция bar должна обновить ее как переменную, связанную с self вместо класса:

def bar(self, q):
    x=2
    y=8
    self.z= x+y+q
    print(self.z)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...