对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 相关文章推荐
使用Django的模版来配合字符串翻译工作
Jul 27 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
浅析Python 引号、注释、字符串
Jul 25 Python
python SocketServer源码深入解读
Sep 17 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
解决torch.autograd.backward中的参数问题
Jan 07 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
Python定义一个函数的方法
Jun 15 Python
Django配置跨域并开发测试接口
Nov 04 Python
Python编写万花尺图案实例
Jan 03 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 7.1新特性的汇总介绍
2016/12/16 PHP
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
security.js实现的RSA加密功能示例
2018/06/06 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
python的Tqdm模块的使用
2018/01/10 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
python常用数据重复项处理方法
2019/11/22 Python
python Tensor和Array对比分析
2020/01/08 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
24个canvas基础知识小结
2014/12/17 HTML / CSS
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
几个判断型的面试题
2012/07/03 面试题
养殖项目策划书范文
2014/01/13 职场文书
cf收人广告词大全
2014/03/14 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers