Python / Django - словарь классов, сохраняющийся в поле зрения? - PullRequest
0 голосов
/ 25 марта 2011

У меня есть класс в Django, который хранится в каталоге utils.Я использую этот класс почти как модель для моего views.py.Я испытываю странное поведение.Я создаю экземпляр класса и имею в своем распоряжении словарь;однако словарь, похоже, сохраняется / кэшируется / запоминается при загрузке следующей страницы.

class my_class:
    id = {"section": None, "sub_section": None, "topic": None, "page": None}

    def __init__(self, request):
        self.request = request
        return True

    def set_ids(self):
        self.id['section'] = 1
        self.id['sub_section'] = 1
        self.id['topic'] = 1
        self.id['page'] = 1

Этот образец класса создается в моем файле views.py:

@login_required
def example(self):
    object = my_class(request)
    print object.id
    object.set_ids()
* 1006какая-то сумасшедшая причина, по которой идентификаторы напечатанного объекта являются постоянными.При следующей загрузке страницы перед установкой идентификаторов с помощью метода класса "set_ids" идентификаторы из загрузки предыдущей страницы все еще существуют ... ??? .... STUMPED!

1 Ответ

1 голос
/ 25 марта 2011

Поле my_class.id является полем класса , а не элементом экземпляра , поэтому для каждого экземпляра my_class существует только одна копия my_class.id.

Если вы хотите, чтобы id был уникальным для каждого экземпляра, вам нужно инициализировать его в __init__:

def __init(self, request):
    ...
    self.id = { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...