目录
一、看一段代码,并分析问题
二、二说self
1、成员方法定义的基本语法
2、使用细节
一、看一段代码,并分析问题
python">class Dog:name="波斯猫"age=2def info(self,name):print(f"name信息:{name}") # 加菲猫dog=Dog()
dog.info("加菲猫")
如果我们希望在成员方法内,访问对象的属性/成员变量,怎么办?-->self
python">class Dog:name="波斯猫"age=2def info(self,name):print(f"name信息:{name}") # 加菲猫# 如果希望访问到属性name,使用self.name即可print(f"成员变量name:{self.name}") # 波斯猫dog=Dog()
dog.info("加菲猫")
二、二说self
1、成员方法定义的基本语法
def 方法名(self,形参列表):
方法体
2、使用细节
1)在方法定义的参数列表中,有一个self
2)self是定义成员方法时,需要写上的,如果不写,则需要使用@staticmethod标注,否则会报错
文档:内置函数 — Python 3.12.4 文档
python">class Dog:name="藏獒"age=2def info(self,name):print(f"name信息:{name}")# 静态方法@staticmethoddef ok():print("ok()...")dog=Dog()
dog.info("德牧")
# 调用静态方法
# 方式1:通过对象调用
dog.ok()
# 方式2:通过类名调用
Dog.ok()
3)self表示当前对象本身,简单的说,哪个对象调用,self就代表哪个对象
python">class Dog:name="藏獒"age=2def hi(self):print(f"hi self:{id(self)}")# self表示当前对象本身
#创建对象dog2
dog2=Dog()
print(f"dog2:{id(dog2)}")
dog2.hi()
print("--------------------")
#创建对象dog3
dog3=Dog()
print(f"dog3:{id(dog3)}")
dog3.hi()
4)当我们通过对象调用方法时,self会隐式的传入
5)在方法内部,要访问成员变量和成员方法,需要使用self
python">class Dog:name="藏獒"age=2def eat(self):print(f"{self.name} 饿了")def cry(self,name):print(f"{name} is crying") print(f"{self.name} is crying")self.eat()# 不能直接调用# eat()dog=Dog()
dog.cry("金毛")