python自定义修饰器_Python内置装饰器:@property, @staticmethod,@classmethod

本文介绍了Python的内置装饰器@property、@staticmethod和@classmethod的使用。@property用于将类方法转换为类属性,提供getter和setter功能。@staticmethod用于创建不需要self参数的静态方法,而@classmethod则用于创建通过cls参数访问类属性的类方法。文章通过示例展示了这些装饰器如何提高代码的pythonic风格。
摘要由CSDN通过智能技术生成

Python有三个内置装饰器:

  • @property 用来修饰类属性
  • @staticmethod 用来修饰类静态方法
  • @classmethod 用来修饰类方法

@property - 类属性装饰器

@property 用来修饰类中的方法,被修饰的类方法,会被当成类属性使用,同时为属性自动添加getter和setter操作

把一个类似getter方法变成属性,只需要在这个方法前面加上@property。

  • 使用@property综合示例

现有个矩形类,可以设置其宽、高,可以求矩形面积、矩形周长。

Java的惯用做法是定义私有的width、height属性,然后定义公有方法getWidth()、getHeight()、getArea()、getPerimeter(),对应的Python实现如下:

2345b1c5bb517a90ebc0caba76e2b1cf.png

以上这种写法,比较中规中矩,有Java程序猿的影子,很不pythonic!

使用Python内置装饰器@property 重写实现如下:

298c13b5a757d14d27bd60afc64b4909.png

该实现是不是很pythonic,同时使用起来更加简单!

静态方法装饰器 & 类方法装饰器

  • @staticmethod - 静态方法装饰器

该装饰器能将类中定义的方法变成静态方法,静态方法不需要传入self参数,基本和全局函数差不多;能够通过类或类的实例对象来调用静态方法。

  • @classmethod - 类方法装饰器

该装饰器能将类中定义的方法变成类方法,类方法的第一个参数必须是cls,cls是对该类的引用,通过cls对类的属性进行访问;能够通过类或类的实例对象来调用类方法。

以下是内置装饰器staticmethod和classmethod使用示例:

a109a3aef1b0b7af7f0720a9d6b43c0a.png

静态方法和类方法是为类提供的操作方法,尽管可以通过类对象调用静态方法和类方法,但是不建议这么做!

最后

接下来会有更加精彩的内容,不想错过的话,可以关注我,第一时间获取更新!

最后,投币收藏转发来一波,我们下期不见不散~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值