不理解对象里self.到底啥意思,求助大佬们
class Person:def __init__(self,name):
self.__name = '小甲鱼'
def getname(self):
return self.__name
p = Person()
第三行代码,也相当于定义了一个私有变量吗
书里描述的是在变量名前加__,但是明明__前还有个self呀,怎么算是定义了一个私有变量呢 你好,鱼油!
`self` 是指代类的实例本身。`self.__name` 是在实例内部定义并访问变量的方式。
在第三行代码 `self.__name = '小甲鱼'` 中:
- `self` 表示当前实例。
- `.__name` 是实例的一个属性。
- 前面的 `__` 是用来定义私有变量的,即在类外部不容易直接访问这个变量。
所以,虽然看起来有 `self`,但实际定义了 `self.__name` 这个私有变量。`self` 是必须的,它让你能在类的方法中访问和修改实例的变量。
希望这样解释能让你明白,`self` 不影响变量的私有性,它只是让你知道这个变量是属于某个实例的。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 self 是对象自身,在这里是 p
私有变量名约定是 __ 开头,所以这个私有变量叫 __name
self.__name 在这个案例中相当于 p.__name,p 对象中的私有变量 __name 本帖最后由 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
等等 self也是一个变量,变量可以有属性
页:
[1]