self的用法
本帖最后由 风船野 于 2022-9-23 11:31 编辑python类中的self表示了什么?
下面这段代码中在isLeftChild方法中的 == self判断时,self代表的是什么?
replaceNodeData方法中的=self赋值时self又代表什么?
class TreeNode:
def __init__(self, key, val, left=None, right=None, parent=None):
self.key = key
self.payload = val
self.leftChild = left
self.rightChild = right
self.parent = parent
def hasLeftChild(self):
return self.leftChild
def hasRightChild(self):
return self.rightChild
def isLeftChild(self):
return self.parent and self.parent.leftChild == self
def isRightChild(self):
return self.parent and self.parent.rightChild == self
def isRoot(self):
return not self.parent
def isLeft(self):
return not (self.rightChild or self.leftChild)
def hasAnyChild(self):
return self.rightChild or self.leftChild
def hasBothChild(self):
return self.rightChild and self.rightChild
def replaceNodeData(self, key, value, lc, rc):
self.key = key
self.payloda = value
self.leftChild = lc
self.rightChild = rc
if self.hasLeftChild():
self.leftChild.parent = self
if self.hasRightChild():
self.rightChild.parent = self
代码出处:
B站数据结构与算法python版二叉查找树操作:
https://www.bilibili.com/video/BV1VC4y1x7uv/?p=68 self就像他的翻译,代表的是自身,当你实例化对象后,对象内的self就指的是实例化对象自身。 本帖最后由 jackz007 于 2022-9-23 00:23 编辑
self 只能在定义对象的方法中可见,而且,一定是隐含存在的第一个参数。self 就是对象自身,例如,a = 8,对象 a 的 self 就是 8,a = 'ABC',对象 a 的 self 就是 'ABC',a = ['A' , 'B' , 'C'] 那么,对象 a 的 self 就是 ['A' , 'B' , 'C'],你可以新建继承自 int、str、list 的类,然后,编写新的方法,把 self 打印出来看看就知道了。
对于其它对象
class A():
def foo(self):
pass
a = A()
a . foo()
调用 a . foo() 时,传入 foo() 中的 self 就是对象 a 对象自身
Python 中的 self 表示实例本身,即当你定义一个 A 类,对 A 类进行初始化赋值,例如 a = A()
此时 self 就表示 a 这个实例对象本身,而你代码 replaceNodeData 函数方法中的左右子孩子节点,是将 self 设置为父节点,即此时的实例对象设置为左右孩子节点的父节点
实例自身{:10_256:} 实例自己{:10_256:} {:10_256:}{:10_256:}{:10_256:}
页:
[1]