本文主要是介绍从二叉树看类,对象和面向对象编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一句话
对象就是活的类
对象在函数里面活动执行任务
本身的自带属性或者行为是在类里面提前定义好的
二叉树来看:
实际上,递归函数里面的root就是类的活体,本来这个类就是一个节点的类里面有三个属性,root就是类的活体,是root赋予类生命,让root能在递归函数里面成为能够动态执行函数的节点,如果没有root,类就是死的,只是一个设计图,所以可以任意调用类里面的属性
所以二叉树递归函数里面的root就是上面定义的treenode类的对象。
之所以叫做,面向对象编程,是因为对象是用在函数里面用来执行任务的,但是这个对象需要有一些属性或者本身就应该有的行为,所以需要提前在类里面定义这个对象的属性或者行为
像在二叉树里面,就是先用trenode类定义了对象root的属性,这样root对象才能在函数中执行任务
python怎么执行的
当你在递归函数内部写 root.left
时,root
是一个特定的 TreeNode
类型的对象,这个对象可以是树中的任何一个节点,而不仅仅是根节点。root.left
表示你想访问当前节点(即 root
对象)的左子节点。
Python 在执行这段代码时,会检查 root
这个对象是否有 left
这个属性。因为 root
是 TreeNode
类的一个实例,在 TreeNode
类的定义中指定了 left
属性(即使在某些情况下可能是默认值 None
),所以 Python 可以正确识别并访问这个属性。
如果你尝试访问一个对象没有定义过的属性,Python 会抛出一个 AttributeError
异常,因为那个属性不存在于该对象的类定义中。
总结:
- 类定义:在类定义中,声明了
TreeNode
类具有value
,left
, 和right
属性。 - 实例化:当创建一个
TreeNode
类的新实例时,这些属性被初始化。就是root - 属性访问:当你在代码中访问这些属性,比如
root.left
,Python 会查找root
对象的类定义中是否存在这个属性,并允许你访问它。 - 递归调用:在递归函数中,每次调用自身时,都会传入一个新的节点(当前节点的左子节点或右子节点),然后对这个新节点重复同样的过程。
这篇关于从二叉树看类,对象和面向对象编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!