2014-09-20 2 views
1

Я реализую R-Trees на Python во вторичной памяти. Мне нужно сохранить файл узлов, поэтому я хочу перечислить их для легкого доступа, и поэтому я могу создать файл с прямоугольниками на каждом узле. Я хочу делать это каждый раз, когда я создаю узел, чтобы дать ему «id», который является последовательным числом.Как добавить последовательные идентификаторы номеров в новые экземпляры объектов?

Я попытался определить глобальную переменную до и после определения моего класса, но это, похоже, не работает. Даже если я определяю его как глобальный, когда я пытаюсь создать узел, есть ошибка в инициализации, потому что «NodeId» не определен, в частности, когда я пытаюсь добавить 1 к переменной:

global nodePath, path, nodeId 
... 
nodeId = 0 

class Node: 
    def __init__(self, tag, t, n, inputFile, id = nodeId, init = True): 
     ... 
     self.id = id 
     nodeId += 1 

Любой идеи или предложения были бы замечательными, спасибо!

ответ

3

Возможно, в определении функции вам понадобилось global nodeId, но концептуально имеет смысл иметь его как переменную класса.

class Node: 
    nodeId = 0 
    def __init__(self, tag, t, n, inputFile, init = True): 
     ... 
     self.id = Node.nodeId 
     Node.nodeId += 1 
+0

Благодарим вас, вы правы, это имеет смысл и отлично работает :) – Francisca