创新互联Python教程:python静态方法和类方法的区别有哪些

区别:

为宾阳等地区用户提供了全套网页设计制作服务,及宾阳网站建设行业解决方案。主营业务为网站建设、网站制作、宾阳网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

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

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

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

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

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

相关推荐:《python教程》

直接上代码:

#  coding:utf-8
class Apple:
    def fun1(self):
        return 'normal'
    @staticmethod
    def fun2():
        return 'staticmethod'
    @classmethod
    def fun3(cls):
        return 'classmethod'
print Apple.fun1
print Apple.fun2
print Apple.fun3
print "-"*80
apple = Apple()
print apple.fun1
print apple.fun2
print apple.fun3
print "-"*80
apple1 = Apple()
print apple1.fun1
print apple1.fun2
print apple1.fun3

运行结果:



>
--------------------------------------------------------------------------------
>

>
--------------------------------------------------------------------------------
>

>

普通方法传入的第一个参数必须是self(当然也可以不用self,官方要求尽量用self),self是指实例对象本身;静态方法无需传参;

类方法传入的第一个参数必须是class,是指类本身。

对比结果1,5,9行

fun1通过class调用时,它是未绑定的方法,而实例化apple和apple1之后,它属于绑定的方法,且实例化后的apple和apple1内存地址不同,因为它们属于不同的实例对象。

对比结果2,6,10行

静态方法fun2通过class调用或者通过实例化后的对象调用,是没有任何区别的,全部都是指向同一块内存地址。可以简单的理解成静态方法与类或者实例没有任何关系,一旦调用后,它的内存地址即确定。

对比结果3,7,11行

类方法fun3通过class调用或者通过实例化后的对象调用,是没有任何区别的,全部都是指向同一块内存地址。为什么?因为实例化对象apple和apple1调用类方法fun3传入的第一个参数是类本身Apple,也就是说apple.fun3 = apple1.fun3 = Apple.fun3。

本文题目:创新互联Python教程:python静态方法和类方法的区别有哪些
网站链接:http://www.shufengxianlan.com/qtweb/news19/307819.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联