装饰器@staticmethod和@classmethod有什么区别

装饰器@staticmethod和@classmethod的区别是:@staticmethod不需要self和cls参数,@classmethod不需要self参数,但需要cls参数。

装饰器@staticmethod和@classmethod有什么区别

通常来说,我们使用一个类的方法时,首先要实例化这个类,再用实例化的类来调用其方法

class Test(object):    """docstring for Test"""    def __init__(self, arg=None):        super(Test, self).__init__()        self.arg = arg    def say_hi(self):        print 'hello wrold'def main():    test = Test() //1. 首先实例化test类    test.say_hi() //2. 再调用类的方法if __name__ == '__main__':    main()

登录后复制

而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。

这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。

class Test(object):    """docstring for Test"""    def __init__(self, arg=None):        super(Test, self).__init__()        self.arg = arg    def say_hi(self):        print 'hello wrold'    @staticmethod    def say_bad():        print 'say bad'    @classmethod    def say_good(cls):        print 'say good'def main():    test = Test()    test.say_hi()    Test.say_bad() //直接类名.方法名()来调用    Test.say_good() //直接类名.方法名()来调用if __name__ == '__main__':    main()

登录后复制

@staticmethod或@classmethod的区别

类的普通方法,地一个参数需要self参数表示自身。

@staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。

@classmethod也不需要self参数,但第一个参数需要是表示自身类的cls参数。

以上就是装饰器@staticmethod和@classmethod有什么区别的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2259573.html

(0)
上一篇 2025年2月27日 04:52:23
下一篇 2025年2月24日 07:55:03

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python中如何在一个函数中加入多个装饰器

    python中在一个函数中加入多个装饰器的方法:可以在函数名前使用@逐一添加装饰器,如【@decorator1 @decorator2】。装饰器与对象一样,可以赋值给一个变量,也可以在其它函数中定义。 Python中的函数就是对象,可以进行…

    2025年2月27日
    200
  • Python装饰器详细介绍

    装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳…

    2025年2月26日
    200
  • 关于python装饰器的详细介绍

    python装饰器就是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能。装饰器本质上就是一个闭包,闭包是装饰器的核心。 定义 (推荐教程:python教程) python装饰器(fuctional…

    2025年2月26日
    400
  • 聊聊Python装饰器

    【相关学习推荐:python教程】 装饰器 本质是一个接受参数为函数的函数。作用:为一个已经实现的方法添加额外的通用功能,比如日志记录、运行计时等。 举例 不带参数的装饰器,不用@ # 不带参数的装饰器def deco_test(func)…

    2025年2月26日
    200
  • Python基础 装饰器及练习

    python视频教程讲解装饰器 推荐免费:Python视频教程 装饰器概念 装饰器,说白了,就是用来装饰函数的一个函数。装饰器遵循 开放封闭原则、依赖倒置原则,这两个原则概念,自行百度下, 立即学习“Python免费学习笔记(深入)”; 装…

    2025年2月26日
    200
  • Python中的装饰器是什么?装饰器是如何工作的?

    Python很早就引入了装饰器——在PEP-318中,作为一种简化函数和方法定义方式的机制,这些函数和方法在初始定义之后必须进行修改。 这样做的最初动机之一是,使用classmethod和staticmethod等函数来转换方法的原始定义,…

    2025年2月26日
    200
  • 使用上下文装饰器调试Pytorch的内存泄漏问题

    装饰器是 python 上下文管理器的特定实现。本片文章将通过一个pytorch  GPU 调试的示例来说明如何使用它们。虽然它可能不适用于所有情况,但我它们却是非常有用。 调试内存泄漏问题 有很多方法可以调试内存泄漏。本文将展示一种识别代…

    2025年2月26日
    200
  • Python装饰器-闭包与函数装饰器

    一、闭包 在学习装饰器前,需要先了解闭包的概念。形成闭包的要点: 函数嵌套将内部函数作为外部函数的返回值内部函数必须要使用到外部函数的变量 下面以一个计算列表平均值的案例来讲解闭包: def make_average():# 创建一个列表,…

    2025年2月26日 编程技术
    200
  • Python编程:如何实现类装饰器及应用?要点要掌握

    示例 Python中的装饰器既可以是函数也可以是类。在前几节中,我们使用的是函数装饰器。现在,我们将学习如何定义类装饰器。 我们将定义充当装饰器的自定义类。当用类装饰/修饰函数时,该函数就成为该类的实例。让我们来一探究竟: 如上所示,我们创…

    2025年2月26日 编程技术
    200
  • 一文读懂 Python 装饰器

    Python 是一种对新手很友好的语言。但是,它也有很多较难掌握的高级功能,比如装饰器(decorator)。很多初学者一直不理解装饰器及其工作原理,在这篇文章中,我们将介绍装饰器的来龙去脉。 在 Python 中,函数是一种非常灵活的结构…

    2025年2月26日
    200

发表回复

登录后才能评论