Как я могу напечатать значение переменной, определенной в методе другого класса в Python? - PullRequest
0 голосов
/ 31 октября 2018
class ClassA:
    def __init__(self):

        def val1(self):
            a = 1
            b = 2
            return b

class ClassB (ClassA):
    def val2(self):
        print(b) # b has been defined in ClassA var1 method 

1 Ответ

0 голосов
/ 31 октября 2018

Следующий ответ основан на предположении, что ваш отступ неверен и что val1 является методом ClassA, а не вложенной функцией в ClassA.__init__. В последнем случае, поскольку функция никуда не возвращается, вы абсолютно ничего не можете сделать, поэтому я не буду учитывать эту возможность.

Чтобы получить значение, вы должны вызвать метод, который его возвращает. Вы не можете получить доступ к локальным переменным внутри метода вне его. В любом случае эти переменные существуют только на время вызова и восстанавливаются каждый раз:

def val2(self):
    print(self.val1())

Или более многословно:

def val2(self):
    b = self.val1()
    print(b)

Альтернатива - сделать значение нелокальным для начала и использовать его как обычный атрибут:

class ClassA:
    def __init__(self):
        self.b = 0

    def val1(self):
        self.a = 1
        self.b = 2

class ClassB (ClassA):
    def val2(self):
        print(self.b) # prints 0 until `self.val1` is called. 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...