Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 3, 2015 20:33:22

Peri-Reis
Зарегистрирован: 2015-08-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Взаимодействие двух классов друг с дргуом

Есть модуль 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() не найден, хотя среда дополняет название класса при его написании и точно видит этот класс!

Офлайн

#2 Дек. 3, 2015 22:37:30

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Взаимодействие двух классов друг с дргуом

показывайте код, показывайте ошибку. Вы где то явно не правильно что то делаете.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Дек. 4, 2015 14:21:00

Peri-Reis
Зарегистрирован: 2015-08-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Взаимодействие двух классов друг с дргуом

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!

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

И снова вопрос:
Как наладить взаимодействие между этими двумя классами, чтобы они имели доступ к методам и данным друг друга?

Отредактировано Peri-Reis (Дек. 4, 2015 14:24:22)

Офлайн

#4 Дек. 4, 2015 15:26:52

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Взаимодействие двух классов друг с дргуом

Так нельзя делать! Это назавается циклический импорт.
http://blog.jetfix.ru/post/kak-rabotaet-import-v-python



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Дек. 4, 2015 16:38:23

Peri-Reis
Зарегистрирован: 2015-08-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Взаимодействие двух классов друг с дргуом

Rodegast
Так нельзя делать! Это назавается циклический импорт.http://blog.jetfix.ru/post/kak-rabotaet-import-v-python

Спасибо большое! Перенес импорт в конец модуля и заработало!

Офлайн

#6 Дек. 4, 2015 23:59:14

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Взаимодействие двух классов друг с дргуом

Peri-Reis
это все равно плохой вариант. Завтра у вас это выйдет другим боком. У вас плохая архитектура.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version