关于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字符串对其居中显示的方法
Jul 11 Python
python二分查找算法的递归实现方法
May 12 Python
Python通过matplotlib绘制动画简单实例
Dec 13 Python
Python多继承顺序实例分析
May 26 Python
Python中使用Counter进行字典创建以及key数量统计的方法
Jul 06 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
python 实现倒排索引的方法
Dec 25 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
Python 私有属性和私有方法应用场景分析
Jun 19 Python
如何在mac下配置python虚拟环境
Jul 06 Python
Python全局变量与global关键字常见错误解决方案
Oct 05 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
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
Javascript之文件操作
2007/03/07 Javascript
caller和callee的区别介绍及演示结果
2013/03/10 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
2016/01/21 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
浅谈python之新式类
2018/08/12 Python
python操作excel的方法
2018/08/16 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
盛大二次面试题
2016/11/18 面试题
大学生专科学习生活的自我评价
2013/12/07 职场文书
自动化专业个人求职信范文
2013/12/30 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
优秀员工推荐材料
2014/12/20 职场文书
排球赛新闻稿
2015/07/17 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
使用Ajax实现进度条的绘制
2022/04/07 Javascript
Ruby处理YAML和json数据
2022/04/18 Ruby