栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

类和方法总结

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

类和方法总结

以日期类为例

class Date:
    #检查数据合法、私有化属性(_)
    def set_data(self,m,d):
        if m >= 1 and m<=12:
            self._month=m
        else:
            raise ValueError("Invalid month:"+str(m))
        if d >= 1 and d<=self.days_in_month():
            self._day=d
        else:
            raise ValueError("Invalid day:"+str(d))
        
    #构造函数
    def __init__(self,month=1,day=1):
        self.set_data(month,day)
        
    #访问器:只读
    @property
    def month(self):
        return self._month
    @property
    def day(self):
        return self._day
    
    #赋值器:写--客户端代码可以直接修改属性
    @month.setter
    def month(self,value):
        self.set_data(value,self._day)
            
    @day.setter
    def day(self,value):
        self.set_data(self._month,value)
        
    #返回月份的最大天数(不考虑闰年)
    def days_in_month(self):
        if self.month in {4,6,9,11}:
            return 30
        elif self.month == 2:
            return 28
        else:
            return 31
        
    #天数+1
    def advance(self):
        self._day += 1
        if self._day > self.days_in_month():
            self._month += 1
            self._day = 1 
            if self._month > 12 :
                self._month = 1
                
    #返回
    def __str__(self):
        return str(self.month)+'/'+str(self.day)
    
    #比较
    def __eq__(self,other):
        return self.month == other.month and self.day ==other.day
birthday = Date(12,31)
print(f"Month/Day: {birthday.month}/{birthday.day}")
birthday.advance()
print(f"Month/Day: {birthday.month}/{birthday.day}")
print(birthday)

Month/Day: 12/31
Month/Day: 1/1
1/1

d1 = Date(12,3)
d2 = Date(12,3)
print(d1 == d2)
d1.day = 10
print(d1.day)
d2.day = 36

True
10
ValueError: Invalid day:36

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/308628.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号