Skip to content Skip to sidebar Skip to footer

Accessing Parent Function's Variable In A Child Function Called In The Parent Using Python

In Python 3.4, I would like to call a child function, defined outside the parent function, that still has access to the parent function's scope (see example below). While I have n

Solution 1:

In this case, you'd probably like to use a class. They are really easy to get your head around. Note the self variable that is passed, and take a look here for a quick explanation of scope in classes.

#!/usr/bin/env python3classFamily(object):defparent(self):
        self.test = 0self.child()

    defchild(self):
        self.test += 1
        print(self.test)

if __name__ == "__main__":
    Family().parent()

So, to translate to your code:

#!/usr/bin/env python3classGraph(object):
    defdepthFirstSearch(self):
        for vertex in self.adjacency_list:
            vertex.status = "not visited"
            vertex.previous = None

        self.visit_count = 0for vertex in self.adjacency_list:
            if vertex.status == "not visited":
                self.depthFirstSearchVisit(vertex)

    defdepthFirstSearchVisit(self, vertex):
        self.visit_count += 1

        vertex.distance = self.visit_count
        vertex.status = "waiting"for edge in vertex.edges:
            if edge.status == "not visited":
                edge.previous = vertex
                self.depthFirstSearchVisit(edge)

        vertex.status = "visited"
        self.visit_count += 1
        vertex.distance_finished = self.visit_count

classEdge(object):
    status = "not vistited"classVertex(object):
    def__init__(self):
        self.edges = [Edge(), Edge()]

if __name__ == "__main__":
    graph = Graph()
    graph.adjacency_list = [Vertex(), Vertex()]
    graph.depthFirstSearch()

Nothing fancy needed.

Solution 2:

You can define a function attribute like parent.test = 0 outside the function and access it in the child function using parent.test

Post a Comment for "Accessing Parent Function's Variable In A Child Function Called In The Parent Using Python"