面向对象编程——药品信息类的封装

下面按照要求定义一个药品 Medicine 类。
Medicine 类的属性如下: 药名 name 价格 price 生产日期 PD 失效日期 Exp
Medicine 类的方法如下: 获取药品名称 get_name()返回类型: str
计算保质期(失效日期和生产热情的时间间隔) get_GP()返回类型: str
计算药品是否过期? is_expire()返回类型:Bool
商品名称和生产日期只能查看不能修改。

拓展知识: datetime 模块 strptime(): 用户输入的日期和时间是字符串,要处理日期和时间,首先必须把 str 转换 为 datetime 对象。
代码:

from datetime import datetime

#定义类
class Medicine(object):
    #类的属性
    def __init__(self,name,price,PD,Exp):
        #属性和对象进行封装
        self.__name = name          #__属性名为私有属性,只能查看不能修改,提高了代码的安全性
        self.price = price
        self.__PD = PD
        self.Exp = Exp

    #获取药品名称
    def get_name(self):
        return (self.__name)
    #计算保质期
    def get_GP(self):
        #strptime(): 用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime对象。
        #strptime(),功能:按照特定时间格式将字符串转换(解析)为时间类型。
        # time.strftime(format, tupletime) 接收以时间元组,并返回以可读字符串表示的当地时间,格式由format决定。
        start = datetime.strptime(self.__PD,'%Y-%m-%d')  #将字符串转换为datetime对象
        end = datetime.strptime(self.Exp,'%Y-%m-%d')
        delta_days = end -start                           #计算保质期
        return delta_days.days

    #计算药品是否过期
    def is_expire(self):

        #功能:将时间格式化
        now = datetime.now()         #计算当前时间
        end = datetime.strptime(self.Exp, '%Y-%m-%d')
        return now > end

medicine0bj = Medicine('感冒胶囊',100,'2019-1-1','2019-5-5')
print("药品名称:",medicine0bj.get_name())
print("药品保质期为: ",medicine0bj.get_GP())
print("药品是否过期:","药品过期" if medicine0bj.is_expire() else "药品未过期")
#print(datetime.now())
#print(type(datetime.now()))
# ending = datetime.strftime(datetime.now(),"%Y-%m-%d")
# print(ending)
#print(time.strftime("%Y-%m-%d",time.localtime()))

运行结果:

药品名称: 感冒胶囊
药品保质期为:  124
药品是否过期: 药品过期
  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值