鱼C论坛

 找回密码
 立即注册
查看: 70|回复: 4

[已解决]不理解对象里self.到底啥意思,求助大佬们

[复制链接]
发表于 2024-9-5 19:24:19 | 显示全部楼层 |阅读模式

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

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

x
class Person:
    def __init__(self,name):
        self.__name = '小甲鱼'
    def getname(self):
        return self.__name

   
p = Person()
第三行代码,也相当于定义了一个私有变量吗
书里描述的是在变量名前加__,但是明明__前还有个self呀,怎么算是定义了一个私有变量呢
最佳答案
2024-9-5 21:05:06
本帖最后由 jackz007 于 2024-9-5 21:13 编辑

      1、self 只能出现在类方法的定义中,用来指代调用方法的对象本身。
      2、self 往往是类方法的第一个参数,在调用的时候不会显式地出现。
           比如:
ax . foo(a , b , c)
           当这样调用对象的方法时,对应的方法定义应该是这样的:
def foo(self , p1 , p2 , p3) :
           形式参数 self 就是调用方法的对象 ax,这样,在方法 foo() 中,通过 self 就可以访问到属于对象 ax 的所有属性。
           例如:
           self . name 对应于 ax . name
           self . age    对应于 ax . age
           等等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-9-5 19:33:31 | 显示全部楼层
你好,鱼油!

`self` 是指代类的实例本身。`self.__name` 是在实例内部定义并访问变量的方式。

在第三行代码 `self.__name = '小甲鱼'` 中:
- `self` 表示当前实例。
- `.__name` 是实例的一个属性。
- 前面的 `__` 是用来定义私有变量的,即在类外部不容易直接访问这个变量。

所以,虽然看起来有 `self`,但实际定义了 `self.__name` 这个私有变量。`self` 是必须的,它让你能在类的方法中访问和修改实例的变量。

希望这样解释能让你明白,`self` 不影响变量的私有性,它只是让你知道这个变量是属于某个实例的。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-5 20:58:06 | 显示全部楼层
self 是对象自身,在这里是 p

私有变量名约定是 __ 开头,所以这个私有变量叫 __name

self.__name 在这个案例中相当于 p.__name,p 对象中的私有变量 __name
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-5 21:05:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2024-9-5 21:13 编辑

      1、self 只能出现在类方法的定义中,用来指代调用方法的对象本身。
      2、self 往往是类方法的第一个参数,在调用的时候不会显式地出现。
           比如:
ax . foo(a , b , c)
           当这样调用对象的方法时,对应的方法定义应该是这样的:
def foo(self , p1 , p2 , p3) :
           形式参数 self 就是调用方法的对象 ax,这样,在方法 foo() 中,通过 self 就可以访问到属于对象 ax 的所有属性。
           例如:
           self . name 对应于 ax . name
           self . age    对应于 ax . age
           等等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-5 21:44:27 | 显示全部楼层
self也是一个变量,变量可以有属性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-17 03:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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