self的使用

目录

一、看一段代码,并分析问题

二、二说self

1、成员方法定义的基本语法

2、使用细节


一、看一段代码,并分析问题

class Dog:
    name="波斯猫"
    age=2

    def info(self,name):
        print(f"name信息:{name}")  # 加菲猫

dog=Dog()
dog.info("加菲猫")

 如果我们希望在成员方法内,访问对象的属性/成员变量,怎么办?-->self

class Dog:
    name="波斯猫"
    age=2

    def 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 文档

class Dog:
    name="藏獒"
    age=2

    def info(self,name):
        print(f"name信息:{name}")

    # 静态方法
    @staticmethod
    def ok():
        print("ok()...")

dog=Dog()
dog.info("德牧")
# 调用静态方法
# 方式1:通过对象调用
dog.ok()
# 方式2:通过类名调用
Dog.ok()

3)self表示当前对象本身,简单的说,哪个对象调用,self就代表哪个对象

class Dog:
    name="藏獒"
    age=2

    def 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

class Dog:
    name="藏獒"
    age=2

    def 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("金毛")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值