说self

使用细节

语法
def 方法名(self,形参列表):
方法体
self在定义成员方法时需要写上,如果不写,需要使用@staticmethod标注,否则会报错
@staticmethod将方法转换成静态方法
语法:
class C:
@staticmethod
def f(arg1, arg2, arg3):…
静态方法调用方式:类调用(如C.f()),也可以实例调用(如C().f())

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

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

    # 静态方法
    # 老师解读:
    # 1.通过@staticmethod 可以将方法转为静态方法
    # 2.如果是一个静态方法, 可以不带self
    # 3. 静态的方法的调用形式有变化
    @staticmethod
    def ok():
        print("ok()...")


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

在这里插入图片描述

self表示当前对象本身,哪个对象调用,self就是哪个对象
相当于object.fun(object)

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()
# 创建对象dog3
print("--------------------")
dog3 = Dog()
print(f"dog3: {id(dog3)}")
dog3.hi()

在这里插入图片描述

当我们通过对象调用方法时,self会隐式传入

在方法内部,要访问成员变量和成员方法,需要使用self

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

    def eat(self):
        print(f"{self.name} 饿了..") # 中华田园犬 饿了..

    def cry(self, name):
        print(f"{name} is crying") # 金毛 is crying
        print(f"{self.name} is crying") # 中华田园犬 is crying
        self.eat() #self
        # 不能直接调用
        # eat()


dog = Dog()
# 修改 dog对象的属性name=> 中华田园犬
dog.name = "中华田园犬"
dog.cry("金毛")

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值