zoukankan      html  css  js  c++  java
  • Task07:类、对象与魔法方法

    练习题

    2、怎么定义私有⽅法?
    函数名前加上“__”两个下划线,那么这个函数就会为私有的了。
    3、尝试执行以下代码,并解释错误原因:

    class C:
        def myFun():
            print('Hello!')
        c = C()
        c.myFun()
    
    myFun函数少了self参数。
    

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

    要求:

    • 平日票价100元
    • 周末票价为平日的120%
    • 儿童票半价
    class Ticket:
        def __init__(self, workday = True, adult = True):
            self.price = 100
            if workday:
                self.ratio = 1
            else:
                self.ratio = 1.2
            if adult:
                self.discount = 1
            else:
                self.discount = 0.5
    
        def get_price(self, num):
            return self.price * self.ratio * self.discount * num
    
    adult1 = Ticket(True, True)
    child1 = Ticket(True, False)
    print("2个成人+1个小孩平日票价为%.2f" %(adult1.get_price(2) + child1.get_price(1)))
       
    

    魔方练习题

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

    要求:

    • 定制一个计时器的类。
    • startstop方法代表启动计时和停止计时。
    • 假设计时器对象t1print(t1)和直接调用t1均显示结果。
    • 当计时器未启动或已经停止计时时,调用stop方法会给予温馨的提示。
    • 两个计时器对象可以进行相加:t1+t2
    • 只能使用提供的有限资源完成。
    import time as t
    from time import sleep
    class MyTimer():
        def __init__(self):
            self.unit = ['年','月','日','时','分','秒']
            self.prompt = "未开始计时!"
            self.lasted = []
            self.begin = 0
            self.end = 0
    
        def __str__(self):
            return self.prompt
        __repr__ = __str__
    
        def __add__(self, other):
            prompt = "总共运行了:"
            result = []
            for index in range(6):
                result.append(self.lasted[index] + other.lasted[index])
                if result[index]:
                    prompt += (str(result[index] + self.unit[index]))
            return prompt
    
        #开始计时
        def start(self):
            self.begin = t.localtime()
            self.prompt = "提示:请先调用stop(()停止计时"
            print "计时开始"
    
        #停止计时
        def stop(self):
            if  not self.begin:
                print "提示:请先调用start()进行计时!"
            else:
                self.end = t.localtime()
                self._calc()
            print "计时结束"
    
    
        #内部方法,计算运行时间
        def _calc(self):
            self.lasted = []
            self.prompt = "总共运行了:"
            for index in range(6):
                self.lasted.append(self.end[index] - self.begin[index])
                if self.lasted[index]:
                    self.prompt += (str(self.lasted[index]) + self.unit[index])
    
            print self.prompt
    #创建对象
    t1 = MyTimer()
    t1.start()
    sleep(3) #中间等待的时间来验证计时
    t1.stop()
    
  • 相关阅读:
    fabric-byfn.sh名利解析
    Hyperledger Fabric--byfn.sh 命令分析
    ubuntu修改网络地址
    docker常用命令
    添加daocloud加速器-18.04.2-Ubuntu
    CA/RA简介
    Redhat防火墙
    Linux上Oracle 11g启动与关闭
    redhat网络配置文件详解
    uva1349Optimal Bus Route Design
  • 原文地址:https://www.cnblogs.com/chenweibo/p/13442966.html
Copyright © 2011-2022 走看看