python - What happened to the self variable when it's passed into a new function? -


this question has answer here:

i trying decipher code posted few years on here: how implement binary search tree in python?

the part confused section:

class node:     def __init__(self, val):         self.l_child = none         self.r_child = none         self.data = val  def binary_insert(root, node):     if root none:         root = node     else:         if root.data > node.data:             if root.l_child none:                 root.l_child = node             else:                 binary_insert(root.l_child, node)         else:             if root.r_child none:                 root.r_child = node             else:                 binary_insert(root.r_child, node) 

the class , functions called doing this:

r = node(3) binary_insert(r, node(7)) binary_insert(r, node(1)) binary_insert(r, node(5)) 

my question is: happened self.data when passed binary_insert function? did node.data , root.data come from?

python uses self way class reference own attributes. python implicitly fills self class instance once method called of instance.

what happened self.data when passed binary_insert function?

nothing. instance of node object passed binary_searach function. node object passed function, still has attributes of node object, including self.data.

where did node.data , root.data come from?

as can see, function takes 2 instances of node object arguments. 2 node objects passed function still have attributes of original node class. use different alias. can observed directly printing out type of root , node parameters:

at begining of function can print types of root , node:

def binary_insert(root, node):     print("the type of root is:", type(root))     print("the type of node is:", type(node))     ... 

which when called outputs:

the type of root is: <class 'node'> type of node is: <class 'node'> type of root is: <class 'node'> type of node is: <class 'node'> type of root is: <class 'node'> type of node is: <class 'node'> type of root is: <class 'node'> type of node is: <class 'node'> 

Comments

Popular posts from this blog

account - Script error login visual studio DefaultLogin_PCore.js -

xcode - CocoaPod Storyboard error: -