类方法、静态方法和实例

本文探讨了如何使用Python创建Date类,包括构造函数__init__,方法如tomorrow和__str__。还介绍了静态方法parse_from_string和类方法from_string的区别,以及判断日期有效性的valid_str。
摘要由CSDN通过智能技术生成
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 "{year}/{month}/{day}".format(year=self.year, month=self.month, day=self.day)
if __name__ == "__main__":
    new_day = Date(2018, 12, 31)
    new_day.tomorrow()
    print(new_day)

Date(2018, 12, 31)里面的这三个参数分别对应 初始化里面的__init__(self, year, month, day)三个值。
self则代表他实例的本身。new_day.tomorrow()在调用该方法时,python会自动把new_day这个实例放入括号内。例如tomorrow(new_day)

静态方法

class Date:
    #构造函数
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day

    @staticmethod
    def parse_from_string(date_str):
        year, month, day = tuple(date_str.split("-"))
        return Date(int(year), int(month), int(day))

date_str = "2018-12-31"
new_day = Date.parse_from_string(date_str)

静态方法有一个坏处,就是会出现硬编码的现象。比如说我们要修改类名Date改为NewDate,那么就要在return的时候改成return NewDate(int(year), int(month), int(day))

类方法
采用类方法就不会出现前面的硬编码的问题,from_string(cls, date_str)里面cls就是指代的我们的类名Date。在python中会直接将类的名字用cls传递出来。

    @classmethod
    def from_string(cls, date_str):
        year, month, day = tuple(date_str.split("-"))
        return cls(int(year), int(month), int(day)
    new_day = Date.from_string(date_str)
    print(new_day)

下面是判断日期的有效性

@staticmethod
    def valid_str(date_str):
        year, month, day = tuple(date_str.split("-"))
        if int(year)>0 and (int(month) >0 and int(month)<=12) and (int(day) >0 and int(day)<=31):
            return True
        else:
            return False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值