Установка переменной класса не обновляет экземпляры исходного класса - PullRequest
0 голосов
/ 04 июня 2019

У меня есть класс:

class MusicCache(BaseDatabaseClass):
    dont_skip_duplicates = False

с методом экземпляра

def is_skip_set(self):
    if MusicCache.dont_skip_duplicates is False:
        # skip duplicates
    else:
        # don't skip duplicates

Есть 5 экземпляров этого класса.

Затем я устанавливаю переменную класса из другого класса, который импортировал MusicCache:

class MQTTHandler(object):
    def set_skip_duplicates(self):
        MusicCache.dont_skip_duplicates = True

is_skip_set() всегда равно false, даже после вызова set_skip_duplicates().

Я попытался сделать dont_skip_duplicates переменной экземпляра и передать все экземпляры MusicCache в MQTTHandler, а также установить переменную экземпляра каждого экземпляра с помощью self.cache_instance_x.dont_skip_duplicates = True, но это тоже не работает, я предполагаю, потому что, когда я передаю экземпляры MQTTHandler Я создаю локальный экземпляр с присваиванием self.

Я играл с сеттерами в стиле Java в классе MusicCache и сделал переменную dont_skip_duplicates равной @property, чтобы добиться того же, но, похоже, ничего не работает.

Каков наилучший способ установки этой переменной во всех экземплярах класса MusicCache?

1 Ответ

0 голосов
/ 05 июня 2019

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

Добавлена ​​переменная типа multiprocessing.Event к основномуСостояние класса и не может правильно установить и получить состояние переменной.

...