Python classmethod装饰器原理及用法解析

 更新时间:2020年10月17日 10:00:36   作者:lincappu  
这篇文章主要介绍了Python classmethod装饰器原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

英文文档:

classmethod(function)

Return a class method for function.

A class method receives the class as implicit first argument, just like an instance method receives the instance. To declare a class method, use this idiom:

class C:
@classmethod
def f(cls, arg1, arg2, ...): ...
The @classmethod form is a function decorator – see the description of function definitions in Function definitions for details.

It can be called either on the class (such as C.f()) or on an instance (such as C().f()). The instance is ignored except for its class. If a class method is called for a derived class, the derived class object is passed as the implied first argument.

Class methods are different than C++ or Java static methods. If you want those, see staticmethod() in this section.

  标记方法为类方法的装饰器

说明:

  1. classmethod 是一个装饰器函数,用来标示一个方法为类方法

  2. 类方法的第一个参数是类对象参数,在方法被调用的时候自动将类对象传入,参数名称约定为cls

  3. 如果一个方法被标示为类方法,则该方法可被类对象调用(如 C.f()),也可以被类的实例对象调用(如 C().f())

>>> class C:
  @classmethod
  def f(cls,arg1):
    print(cls)
    print(arg1)
    
>>> C.f('类对象调用类方法')
<class '__main__.C'>
类对象调用类方法

>>> c = C()
>>> c.f('类实例对象调用类方法')
<class '__main__.C'>
类实例对象调用类方法

  4. 类被继承后,子类也可以调用父类的类方法,但是第一个参数传入的是子类的类对象

>>> class D(C):
  pass

>>> D.f("子类的类对象调用父类的类方法")
<class '__main__.D'>
子类的类对象调用父类的类方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Flask模板渲染与Get和Post请求详细介绍

    Flask模板渲染与Get和Post请求详细介绍

    这篇文章主要介绍了Flask模板渲染与Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • Python实现操纵控制windows注册表的方法分析

    Python实现操纵控制windows注册表的方法分析

    这篇文章主要介绍了Python实现操纵控制windows注册表的方法,结合实例形式分析了Python使用_winreg模块以及win32api模块针对Windows注册表操作相关实现技巧,需要的朋友可以参考下
    2019-05-05
  • 常见的python正则用法实例讲解

    常见的python正则用法实例讲解

    这篇文章为大家详细主要介绍了常见的python正则用法实例,列举Python正则表达式的几种匹配用法,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Python函数中的函数(闭包)用法实例

    Python函数中的函数(闭包)用法实例

    这篇文章主要介绍了Python函数中的函数(闭包)用法,结合实例形式分析了Python闭包的定义与使用技巧,需要的朋友可以参考下
    2016-03-03
  • python-docx文档格式修改方式

    python-docx文档格式修改方式

    使用python-docx库修改docx文档格式的两种方法:第一种是通过自定义函数设置段落和字体样式,第二种是预设Word中的样式后通过代码替换文档整体样式。这两种方式各有优缺点,第一种方法更灵活,而第二种方法可以更全面地保留格式细节
    2024-09-09
  • Python爬虫学习之翻译小程序

    Python爬虫学习之翻译小程序

    这篇文章主要为大家详细介绍了Python爬虫学习之翻译小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Python PIL实现GIF压缩工具

    Python PIL实现GIF压缩工具

    本文将结合wxPython的GUI框架和PIL(Python Imaging Library)的图像处理能力编写一个GIF压缩工具,并提供了两种压缩方式,感兴趣的小伙伴可以了解下
    2024-10-10
  • 完美解决python中ndarray 默认用科学计数法显示的问题

    完美解决python中ndarray 默认用科学计数法显示的问题

    今天小编就为大家分享一篇完美解决python中ndarray 默认用科学计数法显示的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python实现简单的学生成绩管理系统

    python实现简单的学生成绩管理系统

    这篇文章主要为大家详细介绍了python实现简单的学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Python使用Matplotlib绘制散点趋势线的代码详解

    Python使用Matplotlib绘制散点趋势线的代码详解

    Matplotlib是一个用于数据可视化的强大Python库,其基本功能之一是创建带有趋势线的散点图,散点图对于可视化变量之间的关系非常有用,本文将指导您使用Matplotlib绘制散点趋势线的过程,涵盖线性和多项式趋势线,需要的朋友可以参考下
    2025-01-01

最新评论