第七章 面向对象程序设计
实例一:创建大雁类并定义飞行方法
- 代码:
class Geese: #创建大雁类
"大雁类"
def __init__(self,beak,wing,claw): #构造方法
print("我是大雁类!我有以下特征:")
print(beak) #输出喙的特征
print(wing) #输出翅膀的特征
print(claw) #输出爪子的特征
def fly(self,state): #定义飞行方法
print(state)
'''*****************调用方法******************'''
beak_1 = '喙的基部较高,长度和头部的长度几乎相等' #喙的特征
wing_1 = '翅膀长而尖' #翅膀的特征
claw_1 = '爪子是蹼状的' #爪子的特征
wildGoose = Geese(beak_1,wing_1,claw_1) #创建大雁类的实例
wildGoose.fly("我飞行的时候,一会儿排成个人字,一会排成个一字") #调用实例办法
- 结果:
我是大雁类!我有以下特征:
喙的基部较高,长度和头部的长度几乎相等
翅膀长而尖
爪子是蹼状的
我飞行的时候,一会儿排成个人字,一会排成个一字
实例二:通过类属性统计类的实例个数
- 代码:
class Geese:
"雁类"
neck = "脖子较长" #类属性(脖子)
wing = "振翅频率高" #类属性(翅膀)
leg = "腿位于身体的中心支点,行走自如" #类属性(腿)
number = 0 #编号
def __init__(self): #构造方法
Geese.number +=1 #将编号加1
print("\n我是第"+str(Geese.number)+"只大雁,我属于雁类!我有以下特征:")
print(Geese.neck) #输出脖子的特征
print(Geese.wing) #输出翅膀的特征
print(Geese.leg) #输出腿的特征
#创建4个雁类的对象(相当于有4只大雁)
list1 = []
for i in range(4): #循环4次
list1.append(Geese()) #创建一个雁类的实例
print("一共有"+str(Geese.number)+"只大雁")
- 结果:
我是第1只大雁,我属于雁类!我有以下特征:
脖子较长
振翅频率高
腿位于身体的中心支点,行走自如
我是第2只大雁,我属于雁类!我有以下特征:
脖子较长
振翅频率高
腿位于身体的中心支点,行走自如
我是第3只大雁,我属于雁类!我有以下特征:
脖子较长
振翅频率高
腿位于身体的中心支点,行走自如
我是第4只大雁,我属于雁类!我有以下特征:
脖子较长
振翅频率高
腿位于身体的中心支点,行走自如
一共有4只大雁
实例三:在模拟电影点播功能时应用属性
- 代码:
class TVshow: #定义电视节目类
list_film = ["战狼2","红海行动","西游记女儿国","熊出没·变形记"]
def __init__(self,show):
self.__show = show
@property #将方法转换为属性
def show(self): #定义show()方法
return self.__show #返回私有属性的值
@show.setter #设置setter方法,让属性可修改
def show(self,value):
if value in TVshow.list_film: #判断值是否在列表中
self.__show = "您选择了《" + value + "》,稍后将播放" #返回修改的值
else:
self.__show = "您点播的电影不存在"
tvshow = TVshow("战狼2") #创建类的实例
print("正在播放:《",tvshow.show,"》") #获取属性值
print("您可以从",tvshow.list_film,"中选择要点播的电影")
tvshow.show = "红海行动" #修改属性值
print(tvshow.show) #获取属性值
- 结果:
正在播放:《 战狼2 》
您可以从 ['战狼2', '红海行动', '西游记女儿国', '熊出没·变形记'] 中选择要点播的电影
您选择了《红海行动》,稍后将播放
实例四:创建水果基类及其派生类
- 代码:
class Fruit: #定义水果类(基类)
color = "绿色" #定义类属性
def harvest(self,color):
print("水果是:" + color +"的!") #输出的是形式参数color
print("水果已经收获……")
print("水果原来是:" + Fruit.color + "的!") #输出的是类属性color
class Apple(Fruit): #定义苹果类(派生类)
color = "红色"
def __init__(self):
print("我是苹果")
class Orange(Fruit): #定义橘子类(派生类)
color = "橙色"
def __init__(self):
print("\n我是橘子")
apple = Apple() #创建类的实例(苹果)
apple.harvest(apple.color) #调用基类的harvest()方法
orange = Orange() #创建类的实例(橘子)
orange.harvest(orange.color) #调用基类的harvest()方法
- 结果:
我是苹果
水果是:红色的!
水果已经收获……
水果原来是:绿色的!
我是橘子
水果是:橙色的!
水果已经收获……
水果原来是:绿色的!
实例五:在派生类中调用基类的__int__()方法定义类属性
- 代码:
class Fruit: #定义水果类(基类)
def __init__(self,color = "绿色"):
Fruit.color = color #定义类属性
def harvest(self,color):
print("水果是:" + color +"的!") #输出的是形式参数color
print("水果已经收获……")
print("水果原来是:" + Fruit.color + "的!") #输出的是类属性color
class Apple(Fruit): #定义苹果类(派生类)
color = "红色"
def __init__(self):
print("我是苹果")
super().__init__() #调用基类的__init__()方法
class Sapodilla(Fruit):
def __init__(self,color):
print("\n我是人参果")
super().__init__(color)
#重写harvest()方法的代码
def harvest(self,color):
print("人参果是:" + color + "的!")
print("人参果已经收获……")
print("人参果原来是:" + Fruit.color + "的!")
apple = Apple()
apple.harvest(apple.color)
sapodilla = Sapodilla("白色")
sapodilla.harvest("金黄色带紫色条纹")
- 结果:
我是苹果
水果是:红色的!
水果已经收获……
水果原来是:绿色的!
我是人参果
人参果是:金黄色带紫色条纹的!
人参果已经收获……
人参果原来是:白色的!
实战一:修改手机默认语言
- 代码:
class Phone:
def __init__(self): #定义无参构造方法
print("智能手机的默认语言为英文")
def changeLan(self,lan):#定义有参方法
print("将智能手机的默认语言设置为" + lan)
change1 = Phone()
change2 = change1.changeLan("中文")
- 结果:
智能手机的默认语言为英文
将智能手机的默认语言设置为中文
实战二:给信用卡设置默认密码
- 代码:
class Xyk:
def __init__(self):
self.kahao = "4013735633800642"
self.mima = "123456"
print("信用卡" + self.kahao + "的默认密码为" + self.mima)
def changeLan(self,lan):
self.kahao = "4013735633800642"
print("重置信用卡" + self.kahao + "的密码为" + lan)
change1 = Xyk()
change2 = change1.changeLan("168779")
- 结果:
信用卡4013735633800642的默认密码为123456
重置信用卡4013735633800642的密码为168779
实战三:打印每月销售明细
- 代码:
class SaleHandler:
'''销售管理类'''
def __init__(self):
self.__sale_data = {
"2":[('T0001','笔记本电脑'),
('T0002','荣耀6X'),
('T0003','ipad'),
('T0004','荣耀V9'),
('T0005','MACBook')]} #{key:value}
def querSaleList(self,query_month):
'''根据输入月份,查询商品明细'''
if query_month in self.__sale_data:
print("%s月份商品销售明细如下:" % query_month)
for item in self.__sale_data[query_month]:
print("商品编号:%s 商品名称: %s " % item)
else:
print("该月份没有销售数据或输入的月份有误!")
print("-------------销售明细------------")
sh = SaleHandler()
while True:
month = input("请输入要查询的月份(例如1、2、3等):")
if month == 'quit':
break
sh.querSaleList(month)
- 结果:
-------------销售明细------------
请输入要查询的月份(例如1、2、3等):2
2月份商品销售明细如下:
商品编号:T0001 商品名称: 笔记本电脑
商品编号:T0002 商品名称: 荣耀6X
商品编号:T0003 商品名称: ipad
商品编号:T0004 商品名称: 荣耀V9
商品编号:T0005 商品名称: MACBook
请输入要查询的月份(例如1、2、3等):5
该月份没有销售数据或输入的月份有误!
请输入要查询的月份(例如1、2、3等):