鱼C论坛

 找回密码
 立即注册
查看: 3095|回复: 7

[已解决]self的用法

[复制链接]
回帖奖励 6 鱼币 回复本帖可获得 2 鱼币奖励! 每人限 1 次
发表于 2022-9-22 23:49:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 风船野 于 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
最佳答案
2022-9-23 07:02:32

Python 中的 self 表示实例本身,即当你定义一个 A 类,对 A 类进行初始化赋值,例如 a = A()

此时 self 就表示 a 这个实例对象本身,而你代码 replaceNodeData 函数方法中的左右子孩子节点,是将 self 设置为父节点,即此时的实例对象设置为左右孩子节点的父节点


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-23 00:04:35 | 显示全部楼层

回帖奖励 +2 鱼币

self就像他的翻译,代表的是自身,当你实例化对象后,对象内的self就指的是实例化对象自身。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-23 00:12:45 | 显示全部楼层

回帖奖励 +2 鱼币

本帖最后由 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-23 06:49:23 | 显示全部楼层

回帖奖励 +2 鱼币

对象自身
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-23 07:02:32 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +2 鱼币


Python 中的 self 表示实例本身,即当你定义一个 A 类,对 A 类进行初始化赋值,例如 a = A()

此时 self 就表示 a 这个实例对象本身,而你代码 replaceNodeData 函数方法中的左右子孩子节点,是将 self 设置为父节点,即此时的实例对象设置为左右孩子节点的父节点


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-23 08:05:31 | 显示全部楼层

回帖奖励 +2 鱼币

实例自身
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-23 11:44:10 | 显示全部楼层

回帖奖励 +2 鱼币

实例自己
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-23 18:35:20 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-10 17:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表