习题P134
2.
在变量和函数名前加两个下划线“——”
原因:由于格式不当,对类的调用被误认为是类的一部分
改进:
class C:
def myFun(self):
print('Hello!')
c = C()
c.myFun()
4.
class Ticket():
ticket = 100
adult = 0
kid = 0
week = 0
def __init__(self,a,k,w):
self.adult = a
self.kid = k
self.week = w
def output(self):
if self.week ==0:
print("工作日,有%d个大人和%d个小孩,需付%d元"%(self.adult,self.kid,self.adult*self.ticket+0.5*self.kid*self.ticket))
else:
print("周末,有%d个大人和%d个小孩,需付%d元"%(self.adult,self.kid,1.2*(self.adult*self.ticket+0.5*self.kid*self.ticket)))
a = list(map(int,input("几个大人?几个小孩?是周末吗?(工作日请输0)").split()))
test = Ticket(a[0],a[1],a[2])
test.output()
P153
new
创建示例对象
init
对实例对象初始化
str
当print时,打印出具有可读性的返回值
repr
当print时,打印对象的官方描述
import datetime
d = datetime.datetime.now()
print(str(d))
print(repr(d))
两者实现的功能相同,只是显示侧重点不同,一个注重可读一个注重准确
getitem
定义获取元素的行为
setitem
定义指定元素的行为
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 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(2)
t1.stop()
t2 = MyTimer()
t2.start()
sleep(1)
t2.stop()