对Python中的@classmethod用法详解


Posted in Python onApril 21, 2018

在Python面向对象编程中的类构建中,有时候会遇到@classmethod的用法。

总感觉有这种特殊性说明的用法都是高级用法,在我这个层级的水平中一般是用不到的。

不过还是好奇去查了一下。

大致可以理解为:使用了@classmethod修饰的方法是类专属的,而且是可以通过类名进行调用的。为了能够展示其与一般方法的差异,写一段简单的代码如下:

class DemoClass:
    @classmethod
    def classPrint(self):
       print("class method")
    def objPrint(self):
       print("obj method")
 
obj = DemoClass()
obj.objPrint()
obj.classPrint()
 
DemoClass.classPrint()
DemoClass.objPrint()

程序的执行结果如下:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python classmethod.py
obj method
class method
class method
Traceback (mostrecent call last):
 File "classmethod.py", line 13, in<module>
  DemoClass.objPrint()
TypeError: unboundmethod objPrint() must be called with DemoClass instance as first argument (gotnothing instead)
grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$exit
exit
 
E:\01_workspace\02_programme_language\03_python\03_OOP\2017\08>pythonclassmethod.py
obj method
class method
class method
Traceback (mostrecent call last):
 File "classmethod.py", line 13, in<module>
  DemoClass.objPrint()
TypeError:objPrint() missing 1 required positional argument: 'self'

上面的程序执行,我是在两个操作系统中的两个Python版本环境中进行的。不管是Py2还是Py3,这方面的设计都是差不多的。总体来说,这种用法还是很微妙的。由于没有足够的实战历练,暂时还说不好这个东西有什么更好的优势。

这篇对Python中的@classmethod用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的几种开发工具介绍
Mar 07 Python
使用Python进行稳定可靠的文件操作详解
Dec 31 Python
Python的设计模式编程入门指南
Apr 02 Python
解决Python字典写入文件出行首行有空格的问题
Sep 27 Python
Python程序员面试题 你必须提前准备!
Jan 16 Python
浅谈Python中的作用域规则和闭包
Mar 20 Python
Python RabbitMQ消息队列实现rpc
May 30 Python
python3的输入方式及多组输入方法
Oct 17 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
Django 5种类型Session使用方法解析
Apr 29 Python
基于Python正确读取资源文件
Sep 14 Python
python3+dlib实现人脸识别和情绪分析
Apr 21 #Python
Python通过属性手段实现只允许调用一次的示例讲解
Apr 21 #Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 #Python
使用pandas读取csv文件的指定列方法
Apr 21 #Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 #Python
pandas or sql计算前后两行数据间的增值方法
Apr 20 #Python
对pandas进行数据预处理的实例讲解
Apr 20 #Python
You might like
PHP 时间转换Unix时间戳代码
2010/01/22 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
php文件下载处理方法分析
2015/04/22 PHP
PHP curl使用实例
2015/07/02 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
JavaScript实现原型封装轮播图
2020/12/27 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
python实现控制COM口的示例
2019/07/03 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
个人自我鉴定
2013/11/07 职场文书
建筑工程毕业生自我鉴定
2014/01/14 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
MySQL索引失效的典型案例
2021/06/05 MySQL