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

 更新时间:2019年08月30日 09:54:01   作者:haeasringnar  
今天小编就为大家分享一篇关于Python3 类方法、静态方法新解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

如下所示:

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 collections模块的使用

    python collections模块的使用

    这篇文章主要介绍了python collections模块的使用,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-10-10
  • python scrapy拆解查看Spider类爬取优设网极细讲解

    python scrapy拆解查看Spider类爬取优设网极细讲解

    本篇博客为你带来 scrapy.Spider 模块中的相关函数与类,带你再一次认识 scrapy 的细节。本次采集的目标站点为:优设网,有需要的朋友可以借鉴参考下
    2021-11-11
  • matlab和Excel的数据交互操作(非xlsread和xlswrite)

    matlab和Excel的数据交互操作(非xlsread和xlswrite)

    在使用MATLAB时,可能会遇到很多表格数据的处理,有时MATLAB也需要利用现存的表格数据实现操作目的,下面这篇文章主要给大家介绍了关于matlab和Excel的交互操作的相关资料,非xlsread和xlswrite,需要的朋友可以参考下
    2021-08-08
  • Python如何在类中定义装饰器

    Python如何在类中定义装饰器

    这篇文章主要介绍了Python如何在类中定义装饰器的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python中检查字符串是否仅包含字母的方法详解

    Python中检查字符串是否仅包含字母的方法详解

    这篇文章主要为大家详细介绍了Python中的多种方法来检查字符串是否只由字母组成,以及它们的应用场景和优劣,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • python 中不同包 类 方法 之间的调用详解

    python 中不同包 类 方法 之间的调用详解

    这篇文章主要介绍了python 中不同包 类 方法 之间的调用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 基于Python实现批量保存视频到本地

    基于Python实现批量保存视频到本地

    我们刷视频时常常会想把精彩的视频保存到本地,如果少数的还行,如果有很多的话一个个保存太麻烦了。本文教你如何用Python实现视频批量保存到本地,需要的可以参考一下
    2022-05-05
  • 详解如何优化和调整Python中Scrapy的性能

    详解如何优化和调整Python中Scrapy的性能

    在本篇高级教程中,我们将深入探讨如何优化和调整Scrapy爬虫的性能,以及如何处理更复杂的抓取任务,如登录,处理Cookies和会话,以及避免爬虫被网站识别和封锁,需要的朋友可以参考下
    2023-09-09
  • Python3学习笔记之列表方法示例详解

    Python3学习笔记之列表方法示例详解

    Python3 列表 序列是Python中最基本的数据结构,下面这篇文章主要给大家介绍了关于Python3学习笔记之列表方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下。
    2017-10-10
  • anaconda如何创建和删除环境

    anaconda如何创建和删除环境

    这篇文章主要介绍了anaconda如何创建和删除环境,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04

最新评论