Я получаю не тот вывод, что нужно при импортировании файлов (с родительским и дочерним классом) Может кто-то знает как это исправить?

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

я имею главный файл под названием t1

lst = [[0, 1, 5], [2, 3, 6], [4, 5, 8], [0, 3, 2]]

if __name__ == '__main__':
   import t2
   for n in range(0, len(lst)):
      a = t2.Employee(lst[n][0], lst[n][1])
      a.determine()

также родительский класс t2

from t1 import lst

class Employee:
   def __init__(self, kod, PIP):
      self.kod = kod
      self.PIP = PIP

   def determine(self):
      for i in lst:
         if i[0] == 0:
            import t3
            p = t3.Prog(self.kod, self.PIP)
            p.calculateSalary()
         elif i[0] == 2:
            import t4
            j = t4.last(self.kod, self.PIP)
            j.calculateSalary()

и два дочерних класса t3

from t2 import Employee
class Prog(Employee):

    def __init__(self, kod, PIP):
      super().__init__(kod, PIP)

    def calculateSalary(self):
       if self.PIP == 5:
          s = self.kod + self.PIP
          print(s)
       elif self.PIP == 2:
          s = self.kod + self.PIP
          print(s)

и t4

  from t2 import Employee
  class last(Employee):

     def __init__(self, kod, PIP):
        super().__init__(kod, PIP)

     def calculateSalary(self):
        if self.PIP == 6:
           s = self.kod + self.PIP
           print(s)

Я вроде бы разобралась с проблемой циклического импорта.(но что-то мне подсказывает что все-таки проблема все же из for). Мне нужно получить такой вывод

6
9
5

я получаю такой вывод

   6
   6
   9
   5
   5

Я не очень понимаю, почему так получается. Возможно, кто-то знает как это исправить. Заранее спасибо!


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

Автор решения: CrazyElf

Так у вас два цикла по lst:

  • в основном файле t1
  • в Employee.determine

Я прошёл глазами несколько первых итераций - фактический вывод соответствует коду, всё работает как закодировано.

По максимуму там могло вообще 16 чисел напечататься, потому что это цикл в цикле 4*4 = 16, но у вас не все ветки кода делают печать, поэтому печатается меньше.

Видимо, какой-то из этих циклов лишний, но понять какой именно, не зная постановку задачи, затруднительно.

→ Ссылка