Brian van den Broek wrote:

Alan Gauld said unto the world upon 2005-02-10 02:58:

Pseudo code:
       class Body:
          def __init__(self,content):
            self.contents = contents
            self.nodes = []

          def parse(self):
             for line in self.contents:
                 if line == NodeStartTag:
                    node = Node()
                 if line == NodeEndTag:
                    self.nodes.append(node)
                 node.append(line)

       class Node:
         def __init__(self,lines=[]):
              self.lines = lines
         def append(self,item):
              self.lines.append(item)
         def parse(self):
              # your parsing method here.


Hi all,

YAQ (Yet Another Question):

Following the general pattern, I end up with a Body object which has an attribute .nodes that consists of a list of Node objects.

So, something like:

My Example Body
   Node List
      Node the first
      Node the second

Is there any way to make methods of the Node class access attributes of `parents' of instances? I would like a Node instance such as Node the first above to be aware just what it is a node of and what its siblings are.

Does this make sense?

I think so. I haven't tested this (pseudo) code which I took from your above post and just modified it, but I think you want something like this:


Pseudo code:
      class Body:
         def __init__(self,content):
           self.contents = contents
           self.nodes = []

def parse(self):
for line in self.contents:
if line == NodeStartTag:
node = Node(self) #when you create a node, pass in the parent object like this
if line == NodeEndTag:
self.nodes.append(node)
node.append(line)


class Node:
def __init__(self, parent, lines=[]):
self.lines = lines
self.parent = parent #and store the parent like this
def append(self,item):
self.lines.append(item)
def parse(self):
# your parsing method here.
def show_siblings(self):
print self.parent.nodes # and you can access the parent kinda like this.


You don't want to get too carried away with something like this, though. You may want to read up on the Law of Demeter. This (in my opinion) is fine, though.


Best to all,

Brian vdB

PS Thanks for the reply to my venting question, Kent.

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Jeremy Jones
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to