对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 相关文章推荐
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 Python
python通过pip更新所有已安装的包实现方法
May 19 Python
使用python获取csv文本的某行或某列数据的实例
Apr 03 Python
python list转矩阵的实例讲解
Aug 04 Python
python中的decimal类型转换实例详解
Jun 26 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
Python PyQt5模块实现窗口GUI界面代码实例
May 12 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
Python数据库封装实现代码示例解析
Sep 05 Python
python实现发送带附件的邮件代码分享
Sep 22 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
PHP 数组基础知识小结
2010/08/20 PHP
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
javascript操作css属性
2013/12/30 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
Python线性回归实战分析
2018/02/01 Python
python 编写简单网页服务器的实例
2018/06/01 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
Python 线程池用法简单示例
2019/10/02 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
C#面试问题
2016/07/29 面试题
《陈毅探母》教学反思
2014/05/01 职场文书
英文演讲稿
2014/05/15 职场文书
计算机专业自荐信
2014/05/24 职场文书
无罪辩护词范文
2015/05/21 职场文书
美丽人生观后感
2015/06/03 职场文书
入党培养人考察意见
2015/06/08 职场文书
运动会开幕式致辞
2015/07/29 职场文书
停车场管理制度范本
2015/08/05 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
python异步的ASGI与Fast Api实现
2021/07/16 Python
golang生成vcf通讯录格式文件详情
2022/03/25 Golang