Моя цель состоит в том, чтобы создать два объекта, которые взаимодействуют, в частности, один объект, который создает данные и добавляет их в список, и другой объект, который может проверять этот список и выводить данные.Как создать два объекта, которые контролируют друг друга?
Основываясь на другом вопросе stackoverflow, кто-то рекомендовал создать третий объект для хранения данных и получить первые два объекта с этим.
Код работает что-то вроде этого:
class Master:
def __init__(self):
self.data = []
(some methods for interaction)
class A:
def __init__(self, master_instance):
...
self.master_instance = master_instance
(call method that randomly generates data and adds it to the master_instance data
, and run this for a while (essentially as long as I want this process to continue))
def my_a_method(self):
...
class B:
def __init__(self, master_instance):
...
self.master_instance = master_instance
(call method that monitors master_instance to see if object A has added any data
to it, and spit it out. Like above, run this for as long as I want the process
to continue)
def my_b_method(self):
...
master = Master()
a = A(master)
b = B(master)
Так в идеале, оба процесса, запущенного в то же время. Однако, что происходит, первый объект создается, отправляет все данные, а затем запускается второй объект, а затем запускается в одно и то же время. Он работает в том смысле, что они могут обмениваться данными, но это не работает в том смысле, что они оба работают одновременно.
(Это упражнение в книге, из главы о классах, но они на самом деле не обсуждать, как это будет сделано)
Вы должны быть более конкретными о том, что вы имеете в виду под " в то же время". Одна из возможностей состоит в том, чтобы заставить метод A генерировать только небольшой объем данных, а метод B потребляет только небольшой объем данных и управляет «мастером» «цикл событий», который вызывает оба метода по очереди, поэтому вы только взаимодействуете с мастер, а не объекты A и B. В любом случае, что бы вы ни делали «в одно и то же время», не должно происходить в '__init__'. – BrenBarn