python中的装饰器

@staticmethod、@property、@classmethod

staticmethod:静态方法,不需要self和参数,不涉及对类中的方法、属性的操作;对于一个类,我们想要用其中的某个函数(方法),需要首先初始化这个类,然后调用方法,例如下面:如果我们没有在foo函数加staticmethod,我们首先需要初始化一个类:a = A(),a.foo().当我们加了staticmethod,就可以直接A.foo(),更加的简洁。

# 封装
class A(obeject):
	@staticmethod  # 静态方法
    def foo():  # 当一个函数,既不用到实例对象的属性,又不用到类对象的属性时,可以使用静态方法
        print('good')
        # 不需要操作类对象,所以不要cls参数;也不需要操作实例对象,所以也不需要self参数
        # 可以操作实例属性或者类属性,但是最好不要这么做
        # print(p.name)
        # print(Person.type)
# 调用
A.foo()

property:属性方法,只有一个self参数,把类中的方法(函数)当作属性进行调用。例如下面中的score方法,如果我们没有加上property装饰器,我们需要首先初始化类Student:s = Student(),s.score().当加上了装饰器property,我们就可以像调用类属性一样:s.score

class Student(object):
    
    def __init__(self):
        self.score_1 = 1
 
    @property
    def score(self):
        print(self.score_1)
s = Student()
s.score

classmethod:类方法,不需要self,类方法是将类本身作为对象进行操作的方法

自定义装饰器:
自定义装饰器时需要的参数为一个函数,就可以给该函数加上一个功能

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值