Следующий ответ основан на предположении, что ваш отступ неверен и что 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.