练习题:
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做一个简单的定时器类
要求:
- 定制一个计时器的类。
start
和stop
方法代表启动计时和停止计时。- 假设计时器对象
t1
,print(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()