关于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中的正则表达式的用法
Apr 09 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
pytorch索引查找 index_select的例子
Aug 18 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
python 初始化一个定长的数组实例
Dec 02 Python
python使用pymongo与MongoDB基本交互操作示例
Apr 09 Python
Python基于httpx模块实现发送请求
Jul 07 Python
Python colormap库的安装和使用详情
Oct 06 Python
python绘制雷达图实例讲解
Jan 03 Python
Pyhton模块和包相关知识总结
May 12 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通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
PHP session会话操作技巧小结
2016/09/27 PHP
jquery清空textarea等输入框实现代码
2013/04/22 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
node 版本切换的实现
2020/02/02 Javascript
Python不规范的日期字符串处理类
2014/06/10 Python
python提示No module named images的解决方法
2014/09/29 Python
Python标准库内置函数complex介绍
2014/11/25 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
利用Python读取文件的四种不同方法比对
2017/05/18 Python
老生常谈python之鸭子类和多态
2017/06/13 Python
python复制文件到指定目录的实例
2018/04/27 Python
python 将md5转为16字节的方法
2018/05/29 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
耐克美国官网:Nike.com
2016/08/01 全球购物
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
资源工程专业毕业生求职信
2014/02/27 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
教师听课评语大全
2014/12/31 职场文书
新生入学欢迎词
2015/01/26 职场文书
大学生活感想
2015/08/10 职场文书
初中班主任心得体会
2016/01/07 职场文书
数据库连接池
2021/04/06 MySQL