python 类方法,实例方法,静态方法的区别和应用场景

python是面向对象语言,而什么是面向对象呢,就是把一切看成对象(实例),对象和对象之间用方法(行为)建立关联关系

什么是类:
  拥有相同属性和行为的对象分为一组,即为一个类
  类是用来描述对象的工具

类的作用:
  可以用类创建一个或多个此类的对象(实例)
  类内的变量和方法能被此类所创建的所有实例所共同拥有 

什么是对象:
  是指现实中的物体或实例

简单举例:

class Foo():
    Species = '动物'#类属性
    def __init__(self,name):
        self.name = name#实例属性
        
    def func(self, x):
        print('实例方法')

    @classmethod
    def class_foo(cls):
        print('类方法')

    @staticmethod
    def static_foo():
        print('静态方法') 
f = Foo('老鼠')  
#调用实例方法
f.func()
#调用类方法
Foo.class_foo()
#调用静态方法
Foo.static_foo()

定义一个类Foo,就相当于在内存中创建了一个类对象Foo的内存空间,类空间中有Species(类属性),实例方法,静态方法,类方法;而创建一个实例对象f,意味着在内存中有创建了一个实例对象的内存空间,实例空间中有name(实例属性)还有属于自己的方法,而其中的__class__是指向类对象的,表示这个实例属于哪个类,一个类对象可以有多个实例对象;

区别

实例方法,类方法,静态方法都属于类,区别在于调用方式不同;

实例方法:

  实例对象调用,至少有一个参数self(表示实例对象),执行实例方法时,自动将该调用方法的对象赋值给self(self其实是引用调用的实例对象)

类方法(@classmethod装饰):

  类和实例对象都可以调用;至少有一个参数cls(表示类);自动将调用该方法的对象赋值给cls(cls其实是引用当前类)

静态方法(@staticmethod装饰)

  类和实例对象都可以调用,没有默认参数;其实它存在和外部定义函数没有区别,但是为什么这么定义下面会说;

实例对象可以调用类方法,静态方法,实例方法;

类对象只能调用类方法,静态方法;

应用场景说明

类属性是共有的,而实例属性是实例独有的,如果想要修改属性就会有对应的方法(类方法和实例方法),而静态方法的定义上面说过,作用和平常函数没有区别,但是,假设在外部定义对应静态方法的一个普通函数,如果存在多个类都想调用此函数,哪定义这个方法就会有歧义(函数是为了哪个类定义的),而定义静态方法的出发点是:不需要传入特定的参数,功能简单,和类方法和实例方法归为一类;

如果理解的不是很清楚,可以观看:https://www.bilibili.com/video/av50979957?from=search&seid=3682306859886449416

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值