Как из одного класса перебросить переменную в другой класс? без метода global?
Код показать не могу, так как он слишком большой, пожалуйста покажите пример. У меня есть один класс A, в нем есть функция. Есть другой класс B, в нем есть функция. Если быть более точнее, то мне нужно открыть доступ переменне, так чтобы не использовать метод global, возможно ли? пожалуйста приведите пример
Ответы (3 шт):
Автор решения: Алексей Белкин
→ Ссылка
Наследуйте класс B от класса А, если Вам надо чтобы в классе B был доступ к переменным класса А
class A(object):
def __init__(self):
self.dataA = 10
class B(A):
def __init__(self):
super(B, self).__init__()
self.dataB = 50
objA = A()
objB = B()
print(objB.dataA) #Выведет 10
Автор решения: gil9red
→ Ссылка
Можно явно передавать объект одного класса в другой:
class A:
def __init__(self):
self.value = 'value of A'
def get_value(self) -> str:
return self.value
class B:
def __init__(self):
self.value = 'value of B'
def run_A(self, a: A):
print('[run_A]')
print(a.get_value())
print(a.value)
a = A()
print(a.get_value())
print(a.value)
print()
b = B()
print(b.value)
print()
b.run_A(a)
Результат:
value of A
value of A
value of B
[run_A]
value of A
value of A
Можно создавать объект, который в своем поле уже будет иметь объект другого класса
...
class B:
def __init__(self):
self.value = 'value of B'
self.a = A()
def run_A(self):
print('[run_A]')
print(self.a.get_value())
print(self.a.value)
b = B()
print(b.value)
print()
b.run_A()
Автор решения: Никита
→ Ссылка
Выучте концепцию наследования. Вот пример:
class A: # Создаем класс A с полем test
def __init__(self):
self.test = 'Test string'
class B(A): # Создаем класс B и наследуем класс A
def __init__(self):
super(B, self).__init__() # Вызываем метод __init__ класса A
print(self.test) # Печатаем переменную test
B() # Вызываем клас B
# Вывод: Test string