加入收藏 | 设为首页 | 会员中心 | 我要投稿 三明站长网 (https://www.0598zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

可以完全理解Python的类方法与静态方法

发布时间:2021-03-31 13:27:06 所属栏目:外闻 来源:互联网
导读:定义成员方法时,第一个参数是表示类实例的self,这个参数并不需要在调用时显式指定,而是由Python运行时自动处理。对于上面的调用代码,Python运行时会自动将表示MyClass实例的my传入foo方法。所以my就是foo方法中第一个参数self的值。通过self,在方法内部

定义成员方法时,第一个参数是表示类实例的self,这个参数并不需要在调用时显式指定,而是由Python运行时自动处理。对于上面的调用代码,Python运行时会自动将表示MyClass实例的my传入foo方法。所以my就是foo方法中第一个参数self的值。通过self,在方法内部可以引用MyClass实例的其他成员。

执行这段代码,会输出如下内容。很明显,self是一个对象,首地址是0x7f7明显,class_foo方法的cls参数不再是类的实例(因为没有对象地址),而是MyClass类本身。所以不管使用哪一种方式调用类方法,传入class_foo方法第1个参数的值都是类本身。所以通过类方法,可以获取类的静态资源,与直接引用MyClass是一样的。

(3)调用静态方法

调用静态方法与调用类方法一样,都可以通过类实例或类本身调用,从这一点看不出来哪一个是类方法,哪一个是静态方法,代码如下:于在定义静态方法时并没有指定任何额外的参数,所以静态方法并没有与类或类实例绑定,当然,在静态方法中,仍然可以通过MyClass引用类中的静态成员。

3. 方法归属

方法归属是这3种方法的重要区别,可以分别将这3种方法作为属性输出,看出结果可以看到,成员方法绑定到了类实例中(该方法属于类实例),类方法与类本身绑定,而静态方法就是一个独立的对象(因为有对象首地址),不属于任何类或实例。

从以上3个方法我们已经可以得出classmethod方法与staticmethod的区别,下面总结一下:

4. 总结

(1)共同点

classmethod方法与staticmethod方法的共同点只有一个,就是调用时,既可以使用类实例,也可以直接用类本身调用。所以从调用上,根本分不出是类方法,还是静态方法。

(2)差异

类方法顾名思义,是与类绑定的,相当于下面的调用方式

 

(编辑:三明站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读