Как вызвать метод дочернего класса, записанного в другом файле?

У меня возникла проблема, если кто знает как ее решить и имеет время, помогите пожалуйста.

Я имею родительский класс, который находится в файле tester.py

l1 = [1, 1, 2]

class A:
   def __init__(self,l):
      self.l = l

   def qw(self):
        if l1[0] == 1:
           import qwe
           qwe.calculate()

f = A(l)
f.qw()

И также дочерний класс который находится в файле qwe.py

import tester

class B(tester.A):

   def calculate(self):
        print(self.l[0]+'Ok')

Я хочу использовать метод дочернего класса который находится в другом файле в родительском. Я пыталась сделать это так

              import qwe
            qwe.calculate()

f = A(l1)
f.qw()

Но у меня возникает ошибка и я не знаю почему, возможно, кто-то знает решение?


Ответы (2 шт):

Автор решения: S. Nick

Попробуйте так:

tester.py

from qwe import B
        

class A:
    def __init__(self, _list, value):
        self._list = _list
        self.value = value
        
        self.b = B(self._list)

    def qw(self):
        if self._list[0] == self.value:
            self.b.calculate()            


my_list = [1, 1, 2]    
    
a = A(my_list, 1)
a.qw()

qwe.py

class B():
    def __init__(self, _list):
        self._list = _list
        
    def calculate(self):
        print(f'{self._list[0]} Ok')
→ Ссылка
Автор решения: CameL

Вам надо объект класса B создать внутри класса A, тогда к нему можно будет применить метод calculate

test.py

l1 = [1, 1, 2]

class A:
   def __init__(self,l):
      self.l = l

   def qw(self):
        if l1[0] == 1:
           import test2
           qwe = test2.B(l1)
           qwe.calculate()

f = A(l1)
f.qw()

test2.py

class B():
    def __init__(self, _list):
        self._list = _list

    def calculate(self):
        print(f'{self._list[0]} Ok')
→ Ссылка