Найти - Пользователи
Полная версия: Взаимодействие двух классов друг с дргуом
Начало » Python для новичков » Взаимодействие двух классов друг с дргуом
1
Peri-Reis
Есть модуль Work_with_db.py внутри которого есть класс Db_work() и есть модуль Prog_interface.py внутри которого находится класс GUI()! Как наладить взаимодействие между классами Db_work() и GUI(), чтобы они имели доступ к методам друг друга и к данным друг друга???

Я импортировал в модуле Work_with_db.py класс GUI() и создал объект этого класса, а затем в модуле Prog_interface.py импортировал класс Db_work() и создал объект этого класса! На мое удивления в модуле Prog_interface.py я получил ошибку, что класс Db_work() не найден, хотя среда дополняет название класса при его написании и точно видит этот класс!
JOHN_16
показывайте код, показывайте ошибку. Вы где то явно не правильно что то делаете.
Peri-Reis
JOHN_16
показывайте код, показывайте ошибку. Вы где то явно не правильно что то делаете.

Пример:

Модуль Work_with_db.py:

from Prog_interface import *
gui = GUI()
class Db_work():
      def db_prt(self):
             print("Hello ")

Модуль Prog_interface.py:

from Work_with_db import *
db = Db_work()
class GUI():
      def gui_prt(self):
            print("World")

При запуске модуля Work_with_db.py вводит ошибку: NameError: name ‘GUI’ is not defined!
При запуске модуля Prog_interface.py вводит ошибку: NameError: name ‘Db_work’ is not defined!

А если в одном из модулей убрать строчку импорта и создания объекта класс, то все работает!

И снова вопрос:
Как наладить взаимодействие между этими двумя классами, чтобы они имели доступ к методам и данным друг друга?
Rodegast
Так нельзя делать! Это назавается циклический импорт.
http://blog.jetfix.ru/post/kak-rabotaet-import-v-python
Peri-Reis
Rodegast
Так нельзя делать! Это назавается циклический импорт.http://blog.jetfix.ru/post/kak-rabotaet-import-v-python

Спасибо большое! Перенес импорт в конец модуля и заработало!
JOHN_16
Peri-Reis
это все равно плохой вариант. Завтра у вас это выйдет другим боком. У вас плохая архитектура.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB