对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 相关文章推荐
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
Jan 22 Python
Python 列表(List)操作方法详解
Mar 11 Python
全面了解python中的类,对象,方法,属性
Sep 11 Python
Django实现分页功能
Jul 02 Python
Python中logging.NullHandler 的使用教程
Nov 29 Python
python3实现zabbix告警推送钉钉的示例
Feb 20 Python
使用python实现简单五子棋游戏
Jun 18 Python
基于python实现微信好友数据分析(简单)
Feb 16 Python
python对数组进行排序,并输出排序后对应的索引值方式
Feb 28 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
教你怎么用python selenium实现自动化测试
May 27 Python
LeetCode189轮转数组python示例
Aug 05 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使用者状态管理功能的应用
2006/10/09 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
js螺旋动画效果的具体实例
2013/11/15 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
ES6学习教程之模板字符串详解
2017/10/09 Javascript
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
python已协程方式处理任务实现过程
2019/12/27 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
中国电视购物:快乐购
2017/02/04 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
若干个Java基础面试题
2015/05/19 面试题
自考生自我鉴定范文
2013/10/01 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
转正申请报告格式
2015/05/15 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
用python实现监控视频人数统计
2021/05/21 Python
QT与javascript交互数据的实现
2021/05/26 Javascript
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS