怎么使用@Staticmethod、@Classmethod和@Property类装饰器

这篇文章主要讲解了“怎么使用@Staticmethod、@Classmethod和@Property类装饰器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用@Staticmethod、@Classmethod和@Property类装饰器”吧!

站在用户的角度思考问题,与客户深入沟通,找到平邑网站设计与平邑网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册网站空间、企业邮箱。业务覆盖平邑地区。

怎么使用@Staticmethod、@Classmethod和@Property类装饰器

@staticmethod 与 @classmethod在Python中称为  装饰器,用来修饰函数,相当于添加一个额外的功能,不再像普通函数那样进行实例化。

@staticmethod和@classmethod

其实@staticmethod和@classmethod都是用来声明静态方法的。只不过一个声明静态方法,一个声明类方法。

静态方法:使用装饰器@staticmethod。没有self和cls参数。

类方法:使用装饰器@classmethod。第一个参数为当前类的对象,通常为cls。

为了方便大家了解两者的差别,以下的示例代码将有助于发现其中的差别:

''' @Author:Runsen @微信公众号:Python之王 @博客:https://blog.csdn.net/weixin_44510615 @Date:2020/8/30 ''' class A():     # 类的属性     x = 1      @classmethod     def get_name(cls, name):         print(cls.x)           print('my name is %s' % name)      @staticmethod     def get_age(age):         print(A.x)         print(f'i am %s years old' % age)  if __name__ == '__main__':     A.get_name('Runsen')       A.get_age(20)          # 实例对象同样运行     a = A()     a.get_name('Runsen')     a.get_age(20)       #输出如下 1 my name is Runsen 1 i am 20 years old 1 my name is Runsen 1 i am 20 years old

如果在 @staticmethod 中要调用到这个类的一些属性方法,只能直接 类名.属性名或 类名.方法名。而 @classmethod  因为持有cls参数,可以通过cls来调用类的属性,类的方法,实例化对象等,避免硬编码。

@property

@property可以将一个方法的调用变成属性调用。举例说明:平时我们调用数据属性和方法,是这样的

class School():     name = "家里蹲大学"      def test(self):         print("实例方法")      @property     def test_pro(self):         print("静态属性")  if __name__ == "__main__":     s = School()     print(s.name)     s.test()       # 输出如下     家里蹲大学  实例方法

这时就要用到@preperty装饰器,该装饰器能够让一个方法变成属性调用。

class School():     name = "家里蹲大学"      def test(self):         print("实例方法")      @property     def test_pro(self):         print("静态属性")  if __name__ == "__main__":     s = School()     print(s.name)     # 注意返回的函数 千万别加()     s.test_pro       # 输出如下    家里蹲大学  静态属性

从今天以后,在Python编程中,@property广泛应用在Python类的定义中非常常见。你一看到@property,第一反应就是:@property专门负责把一个方法变成同名属性的。

感谢各位的阅读,以上就是“怎么使用@Staticmethod、@Classmethod和@Property类装饰器”的内容了,经过本文的学习后,相信大家对怎么使用@Staticmethod、@Classmethod和@Property类装饰器这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


新闻标题:怎么使用@Staticmethod、@Classmethod和@Property类装饰器
转载源于:http://pwwzsj.com/article/ihoiop.html