关于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魔术方法详解
Feb 14 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
Django中使用Whoosh进行全文检索的方法
Mar 31 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
Python3连接Mysql8.0遇到的问题及处理步骤
Feb 17 Python
Python3中的f-Strings增强版字符串格式化方法
Mar 04 Python
jupyter notebook 多行输出实例
Apr 09 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
Jul 14 Python
pytorch查看网络参数显存占用量等操作
May 12 Python
Pygame游戏开发之太空射击实战敌人精灵篇
Aug 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
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
js 操作符汇总
2014/11/08 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
浅析JS抽象工厂模式
2017/12/14 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
python抓取网页中的图片示例
2014/02/28 Python
在Python中使用异步Socket编程性能测试
2014/06/25 Python
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
Python中set与frozenset方法和区别详解
2016/05/23 Python
python3.4实现邮件发送功能
2018/05/28 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
实习评语
2013/12/16 职场文书
财经学院自荐信范文
2014/02/02 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
房产代理公证处委托书
2014/04/04 职场文书
保护环境建议书300字
2014/05/13 职场文书
2014教师研修学习体会
2014/07/08 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
歌舞青春观后感
2015/06/10 职场文书