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


Posted in Python onOctober 17, 2020

英文文档:

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'>
子类的类对象调用父类的类方法

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

Python 相关文章推荐
Python下的subprocess模块的入门指引
Apr 16 Python
python获取一组汉字拼音首字母的方法
Jul 01 Python
python简单获取数组元素个数的方法
Jul 13 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
Python切片索引用法示例
May 15 Python
正确理解Python中if __name__ == '__main__'
Jan 24 Python
对python while循环和双重循环的实例详解
Aug 23 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
Win下PyInstaller 安装和使用教程
Dec 25 Python
python实现在线翻译功能
Mar 03 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
在pycharm中无法import所安装的库解决方案
May 31 Python
Python基于staticmethod装饰器标示静态方法
Oct 17 #Python
详解python算法常用技巧与内置库
Oct 17 #Python
Python 操作SQLite数据库的示例
Oct 16 #Python
python Selenium 库的使用技巧
Oct 16 #Python
用Python进行websocket接口测试
Oct 16 #Python
python如何控制进程或者线程的个数
Oct 16 #Python
python利用 keyboard 库记录键盘事件
Oct 16 #Python
You might like
PHP函数microtime()用法与说明
2013/12/04 PHP
destoon数据库表说明汇总
2014/07/15 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
跟老齐学Python之编写类之三子类
2014/10/11 Python
pygame学习笔记(4):声音控制
2015/04/15 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
浅谈django的render函数的参数问题
2018/10/16 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
运动会开幕式邀请函
2014/02/03 职场文书
应聘文员自荐信范文
2014/03/11 职场文书
出纳员岗位职责
2014/03/13 职场文书
《海底世界》教学反思
2014/04/16 职场文书
企业理念标语
2014/06/09 职场文书
工会趣味活动方案
2014/08/18 职场文书
迎新年主持词
2015/07/06 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书