前置:python3 ,需要提前了解对象、属性、方法的互相调用
该文章看不懂可以跳转:python 类对象、类属性、类方法和实例对象、实例属性、实例方法的互相调用,重点难点讲解
链接:https://blog.csdn.net/doris_9800/article/details/105106705
需求:请设计4s店铺功能,可以下单,然后仓库提车,然后可以试驾。
步骤1:先把基本框架搭建出来,需要哪些类啊?
#创建类:4S店
class FourStore(object):
def __init__(self):
pass
#新增:下单功能
def order(self):
pass
#创建类:取车仓库repository
class Rep(object):
def select_car(self):
if xx == '本田':
return bentian()
#创建派生类:本田系列
class Bentian():
def __str__(self):
return ('祝贺您喜提---本田----')
步骤2:实现冒烟流程,完成下单
#创建类:4S店
class FourStore(object):
def __init__(self):
self.rep=Rep() #实现每次自动执行,指向仓库类,实现关联
#新增:下单功能,order方法中,跨类引用了select_car方法
def order(self,name):
return self.rep.select_car(name)
#创建类:取车仓库repository
class Rep(object):
def select_car(self,name):
if name == '本田':
return Bentian()
#创建派生类:本田系列
class Bentian:
def __str__(self):
return ('祝贺您喜提---本田----')
mycar=FourStore()
mycar2=mycar.order('本田') #调用order实例方法
print(mycar2)
执行结果:
解释下执行思路,注释已经讲得很清楚了,如果还是不懂,说明你对“对象、属性、方法的互相调用” 不了解,回去复习吧!
步骤3:完善功能,添加多种车牌系列,以及试驾
#创建类:4S店
class FourStore(object):
def __init__(self):
self.rep=Rep()
#新增:下单功能
def order(self,name):
return self.rep.select_car(name)
#创建类:取车仓库repository
class Rep(object):
def select_car(self,name):
if name == '本田':
return Fengtian()
elif name == '丰田':
return Bentian()
elif name == '大众':
return Dazhong()
#创建车父类,赋予车的功能
class Car(object):
def move(self):
print("欢迎试驾,车正在行驶...")
def music(self):
print("播放车内音乐...")
def stop(self):
print("车已停止,试驾结束...")
#创建车类的子类:各种车系列
class Bentian(Car):
def __str__(self):
return ('祝贺您喜提---本田----')
class Fengtian(Car):
def __str__(self):
return ('祝贺您喜提---丰田----')
class Dazhong(Car):
def __str__(self):
return ('祝贺您喜提---大众----')
#开始执行
mycar=FourStore()
# car_values=input('请输入您要购买的车:')
# mycar2=mycar.order(car_values)
mycar2=mycar.order('丰田')
print(mycar2)
mycar2.move() #因为Fengtian()已经实例化后返回给mycar2了,然而Fengtian()继承了Car()的功能
mycar2.music()
mycar2.stop()
运行结果:
祝贺您喜提---本田----
欢迎试驾,车正在行驶...
播放车内音乐...
车已停止,试驾结束...