Python: объект класса Singleton для сохранения списка между импортом? (Например, регистрация администратора django) - PullRequest
0 голосов
/ 21 ноября 2011

Я хочу иметь dict / list, к которому я могу добавить значения, точно так же, как модели могут быть добавлены в реестр администратора в django!

Моя попытка: (package -> __init__.py)

# Singleton object

# __init__.py (Package: pack)
class remember:
  a = []
  def add(data):
    a.append[data]

  def get():
    return a

obj = remember()


# models1.py
import pack

pack.obj.add("data")

# models2.py
import pack

pack.obj.add("data2")
print pack.obj.get()   

# Мы должны получить: ["data", "data2"] # Мы получим: ["data2"]

Как достичь желаемой функциональности?

Некоторые говорят, что методы могутсделать это, если вам не нужно подклассифицировать, как это сделать с помощью методов?

Обновление: Чтобы быть более понятным:

Так же, как django admin register любой может импортировать и зарегистрироваться с помощью администратора, так что регистр сохраняется между импортами.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2011

Если вы ищете синглтон, посмотрите этот старый пост в блоге.Он содержит ссылку на хорошо документированную реализацию ( здесь ).

0 голосов
/ 21 ноября 2011
  1. Не. Если вы считаете, что вам нужен глобальный подход, вы не нуждаетесь в этом, и вам следует пересмотреть подход к проблеме, потому что 99% времени вы делаете это неправильно.

  2. Если у вас есть действительно веская причина для этого, возможно, thread_locals () действительно решит проблему, которую вы пытаетесь решить. Это позволяет вам устанавливать глобальные данные на уровне потоков. Примечание. Это только на немного лучше, чем в истинном глобальном масштабе, и его, как правило, следует избегать, и это может вызвать много головной боли.

  3. Если вы ищете перекрестный запрос «глобальный», то, скорее всего, вы захотите изучить сохранение значений в memcached.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...