零基础学习Python 作业 第37章--未完成???
0. 以下代码体现了面向对象编程什么特征?

多态特征,不同实例调用同一方法返回不同结果!
1.当程序员不想把 同一段代码写几次,他们发明了场景解决这种情况,当程序员有一个类,邮箱定义一个非常类似的新类,他们会怎么做/
答: 定义类
定义之类,类的继承!
2.self参数的作用是什么?
绑定方法,self 是实例对象的唯一标识!
3.如果我们不希望对象的属性 或 方法被外部直接引用,我们可以怎么做?
答: 我们可以在属性或方法名字前边加上双下划线,这样子从外部是无法直接访问到,会显示AttributeError错误
4.类在实例化后那个方法会被自动调用?
__init__方法会在类实例化时被自动调用,我们称之为魔法方法,你可以重写这个方法,为对象定制初始化方案!
5.请解释下边代码错误的原因:

class MyClass:
name = 'FishC'
def myFun(self):
print("hello fishc!")
MyClass.name
MyClass.myFun()
c = MyClass()
c.myFun()
输出返回:
hello fishc!
动手题
#0.按照以下要求定义一个游乐园门票的类,并计算2个成人 + 1个小孩的平日票价。
#平日票价100元
#周末票价为平日的120%
#儿童半票
class Tickets(object):
adult = 100 #成人平日票价
beibi = 50 #儿童平日票价
adult1 = 120 #成人周末票价
beibi1 = 50 #儿童周末票价
def adultPingri(self):
Ts = (int(self.adult*2) + int(self.beibi))
print('并计算2个成人 + 1个小孩的平日票价:%d'%(Ts))
T = Tickets()
T.adultPingri()
class Tickets(object):
def __init__(self,weekend = False,child = False):
self.exp = 100
if weekend:
self.inc = 1.2
else:
self.inc = 1
if child:
self.discount = 0.5
else:
self.discount = 1
def calcPrice(self,num):
return self.exp * self.inc * self.discount * num
adult = Tickets()
child = Tickets(child =True)
print("2个成人 + 1个小孩的平日票价:%.2f"%(adult.calcPrice(2)+child.calcPrice(1)))
输出:
2个成人 + 1个小孩的平日票价:250.00