(11)python静态方法、类方法与实例方法

静态方法:指的是类中无需实例参数化即可调用的方法(不需要self参数),在调用过程中,无需将类实例化,直接在类之后使用.号运算符调用方法。

通常情况下,静态方法使用@staticmethod装饰器来声明。

class ClassA(object):
    @staticmethod
    def func_a():
        print("hello world")

#也可以使用实例调用,但是不会将实例作为参数传入静态方法
ca = ClassA()
ca.func_a()

#也可以只通过类去调用这个方法
ClassA.func_a()

class ClassB(object):
#无@staticmethod
    def func_a():
        print('hello')
ca=ClassB()
ca.func_a()

通过上面的例子,可以看出:因为func_a没有声明为静态方法,类实例在调用func_a时,会隐式地将self参数传入func_a,而func_a本身不接受任何参数,从而引发异常。 

类方法

在python中使用的比较少,类方法传入的第一个参数为cls,是类本身,并且类方法可以通过类直接调用,或者通过实例直接调用。不管是用哪种方法,最左侧传入的参数一定是类本身。

通常情况下,类方法使用@classmethod装饰器来声明

class ClassC(object):
    @classmethod
    def func_a(cls):
        print(type(cls),cls)

通过上述例子可以看出,无论使用的是实例调用还是类方法都可以正常工作。打印的cls,看出cls传入的是实例本身。

实例方法

 实例方法:除静态方法与类方法以外,类的其他方法都属于实例方法。

实例方法需要将实例化后调用,如果使用类直接调用实例方法,需要显式的将实例作为参数传入。

最左侧传入的参数是self,是实例本身。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值