关于Python3 类方法、静态方法新解


Posted in Python onAugust 30, 2019

如下所示:

class Date:
 def __init__(self, year, month, day):
  self.year = year
  self.month = month
  self.day = day

 # 实例方法
 def tomorrow(self):
  self.day +=1

 def __str__(self):
  return '{}/{}/{}'.format(self.year,self.month,self.day)

 # 静态方法
 @staticmethod
 def format_date_str(date_str):
  year, month, day = tuple(date_str.split('-'))
  return Date(int(year),int(month),int(day))

 # 类方法
 # 这里的 cls 实际就是类本身,它将自己本身返回,不需要我们写返回的类名,更好一些
 @classmethod
 def format_str(cls, date_str):
  year, month, day = tuple(date_str.split('-'))
  return cls(int(year),int(month),int(day))

if __name__ == "__main__":
 new = Date(2018,12,12)
 print(new)
 new.tomorrow()
 print(new)

 # 现在我们想输入一个日期字符串需要怎么做呢?
 date_str = '2018-12-30'
 year, month, day = tuple(date_str.split('-')) # 这里利用了tuple的拆包属性,将分开的列表分别赋给变量
 new = Date(year,month,day)
 print(new)
 # 如果有静态方法,就会更加简单了
 new = Date.format_date_str('2019-12-01')
 print(new)
 # 但是静态方法还要将类的名称返回,那有没有更好的方法呢
 # 那就是类方法,类方法的原理就是 将输入的参数处理后 通过类方法返回一个实例对像,静态方法也是如此,但静态方法可以不返回实例 而返回其他的
 new = Date.format_str('2019-9-01')
 print(new)
 # 那么问题来了?什么使用用静态方法,什么时候使用类方法呢?
 # 原则上是:当需要返回实例时使用类方法,不需要返回实例对象时 直接使用静态方法就好了,
 # 例如我们做验证日期字符串是否合法的时候没必要返回实例,那就使用 静态方法就可以了

以上这篇关于Python3 类方法、静态方法新解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现系统状态监测和故障转移实例方法
Nov 18 Python
Python使用Pycrypto库进行RSA加密的方法详解
Jun 06 Python
将pandas.dataframe的数据写入到文件中的方法
Dec 07 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 Python
Python使用GitPython操作Git版本库的方法
Feb 29 Python
解决pycharm安装第三方库失败的问题
May 09 Python
python用Tkinter做自己的中文代码编辑器
Sep 07 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
通过Python把学姐照片做成拼图游戏
Feb 15 Python
Python万能模板案例之matplotlib绘制甘特图
Apr 13 Python
Python 获取指定文件夹下的目录和文件的实现
Aug 30 #Python
简单的Python调度器Schedule详解
Aug 30 #Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 #Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 #Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 #Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 #Python
快速解决docker-py api版本不兼容的问题
Aug 30 #Python
You might like
php中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
php常用Stream函数集介绍
2013/06/24 PHP
php cli换行示例
2014/04/22 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
Python设计模式之单例模式实例
2014/04/26 Python
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
python+pandas分析nginx日志的实例
2018/04/28 Python
基于python实现从尾到头打印链表
2019/11/02 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
Python函数生成器原理及使用详解
2020/03/12 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
德国网上花店:Valentins
2018/08/15 全球购物
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
高校毕业生登记表自我鉴定
2013/11/03 职场文书
运动会通讯稿500字
2014/02/20 职场文书
目标责任书范文
2014/04/14 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
入党转正介绍人意见
2015/06/03 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
mysql幻读详解实例以及解决办法
2022/06/16 MySQL