Task07

Task07

类与对象

练习题

1、以下类定义中哪些是类属性,哪些是实例属性?

class C:
    num = 0
    def __init__(self):
        self.x = 4
        self.y = 5
        C.count = 6

num=0为类属性,x=4和y=5,count为实例属性

2、怎么定义私有⽅法?

在该方法前加__(两个下划线)

3、尝试执行以下代码,并解释错误原因:

class C:
    def myFun(self):
        print('Hello!')
c = C()
c.myFun()

原因:它们必须有一个额外的第一个参数名称(对应于该实例,即该对象本身),按照惯例它的名称是 self。在调用方法时,我们无需明确提供与参数 self 相对应的参数。同时最后两行没有缩进

4、按照以下要求定义一个游乐园门票的类,并尝试计算2个成人+1个小孩平日票价。

要求:

  • 平日票价100元
  • 周末票价为平日的120%
  • 儿童票半价
class Ticket():
    def __init__(self,p,t):
        self.people=p
        self.time=t

    def getPrice(self):
        if self.people=='adult':
            dailyPrice=100
            weekPrice=dailyPrice*1.2
        else:
            dailyPrice=100*0.5
            weekPrice=dailyPrice*1.2*0.5
        if self.time=='daily':
            return dailyPrice
        else:
            return weekPrice
adult=Ticket('adult','daily')
child=Ticket('child','daily')
print(adult.getPrice()*2+child.getPrice())

魔法方法

练习题

1、上面提到了许多魔法方法,如__new__,__init__, __str__,__rstr__,__getitem__,__setitem__等等,请总结它们各自的使用方法。

  • __new__决定是否要使用该 __init__方法,因为__new__
    可以调用其他类的构造方法或者直接返回别的实例对象来作为本类的实例,如果 __new__ 没有返回实例对象,则 __init__ 不会被调用。
  • __init__当一个实例被创建的时候调用的初始化方法。
  • __str__在打印对象,用%s格式化以及强制转换数据类型时触发。
  • __rstr__在没有实现__str__以及使用%r格式化的时候 触发。
  • __getitem__定义获取容器中元素的行为,相当于self[key]。
  • __setitem__定义设置容器中指定元素的行为,相当于self[key] = value。

2、利用python做一个简单的定时器类

要求:

  • 定制一个计时器的类。
  • startstop方法代表启动计时和停止计时。
  • 假设计时器对象t1print(t1)和直接调用t1均显示结果。
  • 当计时器未启动或已经停止计时时,调用stop方法会给予温馨的提示。
  • 两个计时器对象可以进行相加:t1+t2
  • 只能使用提供的有限资源完成。
import time
class Clock():
    def __init__(self):
        self.info = '未开始计时'
        self.start_time = None
        self.sec = None
    def __str__(self):
        return self.info
    def __repr__(self):
        return self.info
    def __add__(self, other):
        return '共计时 %f s' %(self.sec+other.sec)
    def start(self):
        print('开始计时')
        self.start_time=time.time()
        self.info='正在计时'
    def stop(self):
        try:
            self.sec=time.time()-self.start_time
        except:
            print('未开始或者计时已结束')
        else:
            print('停止计时')
            self.info='已计时:%f s' %self.sec
t1 = Clock()
t1.stop()
t1.start()
time.sleep(5)
t1.stop()
print(t1)
t2 = Clock()
t2.start()
time.sleep(5)
t2.stop()
print(t1+t2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本系统的研发具有重大的意义,在安全性方面,用户使用浏览器访问网站时,采用注册和密码等相关的保护措施,提高系统的可靠性,维护用户的个人信息和财产的安全。在方便性方面,促进了校园失物招领网站的信息化建设,极大的方便了相关的工作人员对校园失物招领网站信息进行管理。 本系统主要通过使用Java语言编码设计系统功能,MySQL数据库管理数据,AJAX技术设计简洁的、友好的网址页面,然后在IDEA开发平台中,编写相关的Java代码文件,接着通过连接语言完成与数据库的搭建工作,再通过平台提供的Tomcat插件完成信息的交互,最后在浏览器中打开系统网址便可使用本系统。本系统的使用角色可以被分为用户和管理员,用户具有注册、查看信息、留言信息等功能,管理员具有修改用户信息,发布寻物启事等功能。 管理员可以选择任一浏览器打开网址,输入信息无误后,以管理员的身份行使相关的管理权限。管理员可以通过选择失物招领管理,管理相关的失物招领信息记录,比如进行查看失物招领信息标题,修改失物招领信息来源等操作。管理员可以通过选择公告管理,管理相关的公告信息记录,比如进行查看公告详情,删除错误的公告信息,发布公告等操作。管理员可以通过选择公告类型管理,管理相关的公告类型信息,比如查看所有公告类型,删除无用公告类型,修改公告类型,添加公告类型等操作。寻物启事管理页面,此页面提供给管理员的功能有:新增寻物启事,修改寻物启事,删除寻物启事。物品类型管理页面,此页面提供给管理员的功能有:新增物品类型,修改物品类型,删除物品类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值