python中普通方法classmethod和staticmethod的区别与用法

class Foo(object):

    #实例方法,第一个承诺书必须是实例对象,一般习惯用self.

    def ins_m(self):

        print("是类{}的实例方法,只能被实例调用".format(Foo))  

    #类方法,第一个参数必须是类对象,一般习惯使用cls.使用@classmethod装饰器装饰

    @classmethod

    def cla_m(cls):

        print('class method')

    #j静态方法,参数没有要求,和类没有绑定关系,就是一个普通的方法,

    @staticmethod

    def sta_m():

        print('static method')


foo=Foo() #创建一个实例

#实例方法只能被实例调用 (如果把实例方法的参数去掉,可以被类调用,不能被实例调用!)

#类方法可以被类和实例调用

#静态方法可以被类和实例调用 (不需要参数)

因此:当类中的某个方法是一个普通方法时,加一个staticmehod装饰器,不需要添加实例参数。此方法可以用外部函数替换。

另外还有一个abstractmethod,抽象类,一般在基类中使用,只能被继承,不能被实例化!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容