python-内置装饰器

 类方法

class Methodsdemo:
    param_a = 0
    #定义类方法必须要加 classmethod装饰器
    @classmethod
    def class_method_demo(cls):
        """
        这是一个类方法,类方法的第一个参数必须为cls,以区别实例方法的self参数
        :return:
        """
        print('这是一个类方法',cls.param_a)
if __name__ == '__main__':
    Methodsdemo.class_method_demo()

 定义

  • 使用@classmethod装饰器,第一个参数为类本身,所以通常使用cls命名做区别
  •  在类内可以直接使用类方法或者类变量,无法直接使用实例变量或者方法

调用

  • 无需实例化,直接类.方法名调用,也可以通过实例.方法名调用

静态方法

定义:

  • 使用@staticmethod装饰器,没有和类有关的参数
  • 无法使用任何类方法,类变量或者实例方法,实例变量

调用:

  • 无需实例化,直接通过类.方法名调用,也可以通过实例.方法名调用
class Method_demo:
    param = 0
    @staticmethod
    def method_demo():
        print('这是一个静态方法')#无法调用类变量

if __name__ == '__main__':
    Method_demo.method_demo()

tips:

  • 注意使用@staticmethod
  • 注意该静态方法无法传入self、cls参数
  • 要想传入参数,要避免使用self、cls
class Method_demo:
    param = 0
    @staticmethod
    def method_demo(param1):
        print('这是一个静态方法',param1)#传入参数param1

if __name__ == '__main__':
    Method_demo.method_demo('hogwarts')

运行结果是:这是一个静态方法 hogwarts

总结

名称定义调用关键字使用场景
普通方法至少需要一个参数self实例名.方法名()方法内部涉及到实例对象属性的操作
类方法至少需要一个参数cls类名.方法名()或者实例名.方法名()@classmethod如果需要对类属性,及静态变量进行限制性操作时
静态方法无默认参数类名.方法名()@staticmethod无需类或者实例参与

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值