关于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 28 Python
详解Python编程中包的概念与管理
Oct 16 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
python实现画一颗树和一片森林
Jun 25 Python
Python文件常见操作实例分析【读写、遍历】
Dec 10 Python
用Python编写一个高效的端口扫描器的方法
Dec 20 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
Python OpenCV利用笔记本摄像头实现人脸检测
Aug 20 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
Jun 17 Python
pytorch: Parameter 的数据结构实例
Dec 31 Python
Python使用grequests并发发送请求的示例
Nov 05 Python
Python数据类型最全知识总结
May 31 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的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
解析smarty模板中类似for的功能实现
2013/06/18 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
Javascript中字符串和数字的操作方法整理
2017/01/22 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
Python3实现从文件中读取指定行的方法
2015/05/22 Python
全面了解python字符串和字典
2016/07/07 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
python对文件的操作方法汇总
2020/02/28 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
网络方面基础面试题
2012/11/16 面试题
如何执行一个shell程序
2012/11/23 面试题
最新奶茶店创业计划书范文
2014/02/08 职场文书
出国签证在职证明
2014/09/20 职场文书
2014年村委会工作总结
2014/11/24 职场文书
民事辩护词范文
2015/05/21 职场文书
教师网络培训心得体会
2016/01/09 职场文书