python类方法和静态方法有啥用,python中类方法,类实例方法,静态方法有何区别

  python类方法和静态方法有啥用,python中类方法,类实例方法,静态方法有何区别

  

  区别:

  静态方法装饰器下定义的方法属于函数;

  类装饰器下定义的方法属于方法;

  静态方法不需要传入任何参数;

  该方法传入的第一个参数必须是cls类本身;

  一旦调用了静态方法和类方法,就确定了内存地址。通过类调用的结果与通过实例化的对象调用的结果完全相同。

  相关:《Python教程》

  直接装载代码:

  #编码:utf-8

  classApple:

  deffun1(自身):

  返回“正常”

  @静态方法

  deffun2():

  返回“staticmethod”

  @classmethod

  deffun3(cls):

  返回“classmethod”

  printApple.fun1

  printApple.fun2

  printApple.fun3

  打印-*80

  苹果=苹果()

  printapple.fun1

  printapple.fun2

  printapple.fun3

  打印-*80

  苹果1=苹果()

  printapple1.fun1

  printapple1.fun2

  printapple1.fun3的运行结果:

  unboundmethodApple.fun1

  function 2 at0x 00000000022 fc4a 8

  boundmethodclassobj . fun 3 of class _ _ main _ _ . apple at0x 0000000001 e7c 768

  -

  boundmethodapple . fun 1 of _ _ main _ _ . appleinstance at0x 00000000022 FAE 08

  function 2 at0x 00000000022 fc4a 8

  boundmethodclassobj . fun 3 of class _ _ main _ _ . apple at0x 0000000001 e7c 768

  -

  boundmethodapple . fun 1 of _ _ main _ _ . appleinstance at0x 00000000022 FAE 48

  function 2 at0x 00000000022 fc4a 8

  _ _ main _ _类的Bounethodclassobj.fun3of。apple at0x0000000001e7c768常用方法传入的第一个参数必须是self(当然不要求self,官方要求是尽量使用self)。self是指实例对象本身;静态方法不需要传递参数;

  该方法传入的第一个参数必须是class,它引用类本身。

  比较第1、5和9行的结果。

  通过class调用fun1时,它是一个未绑定的方法,但是实例化apple和apple1后,它属于一个绑定的方法,实例化的apple和apple1由于属于不同的实例对象,所以内存地址不同。

  比较第2、6和10行的结果。

  静态fun2方法由类或实例化的对象调用,没有区别,都指向同一个内存地址。可以简单理解为静态方法与类或实例无关。一旦它被调用,它的内存地址就确定了。

  比较第3、7和11行的结果。

  方法fun3是类调用还是实例化对象调用,没有区别,都指向同一个内存地址。为什么?因为实例化的对象apple和apple1调用类方法fun3,所以传入的第一个参数是类本身apple,即Apple . fun 3=Apple 1 . fun 3=Apple . fun 3。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: