需求1:创建一个4S店“类”和一个汽车“类”
#! /usr/bin/env python
# -*- coding:utf-8 -*-
class Car_store:
def car_order(self,money):
if money>=50000:
#xxx=Car() #另外一种写法,在这里实例化一个实例,然后返回实例。
#return xxx
return Car() #<__main__.Car object at 0x10ca3b978> 创建了一个实例,赋值给car这个变量
class Car:
def move(self):
print("车辆正在移动....")
def music(self):
print("正在播放音乐....")
def stop(self):
print("车辆已停止.....")
p=Car_store() #实例化一个实例
car=p.car_order(50000) #调用类方法并将方法执行结果赋值给car变量,结果变成car=Car()
print(car) #答应类的内存地址
car.move() #调用Car类方法
#注释:首先我们创建了一个汽车4S店的类,然后又创建了一个汽车类;
#第一步:实例化一个实例 p
#第二步:执行car_store类下的car_order方法并传入50000参数,表示大于50000才能买车,当大于5000的时候就return Car() 这个汽车类给car这个变量
#第三步:就相当于car=Car() 给下面的汽车类创建了一个实例
需求2:根据不同类型的车打印车名
#! /usr/bin/env python
# -*- coding:utf-8 -*-
class CarStore:
def __init__(self, money, car_type):
self.money = money
self.car_type = car_type
def order(self):
if self.money >= 150000 and self.car_type == 'Suonata':
return Suonata()
elif self.money > 100000 and self.money < 150000 and self.car_type == 'Mingtu':
return Mingtu()
class Car:
def move(self):
print("车辆正在移动....")
def musci(self):
print("正在播放音乐....")
def stop(self):
print("车辆已停止.....")
class Suonata(Car):
def print_name(self):
print("这是一辆索纳塔汽车")
class Mingtu(Car):
def print_name(self):
print("这是一辆名图汽车")
car_store = CarStore(160000, 'Suonata')
car = car_store.order() #car=Suonata() 创建了一个car实例
car.move()
car.musci()
car.stop()
car.print_name()
以上实例实行结果: 车辆正在移动.... 正在播放音乐.... 车辆已停止..... 这是一辆索纳塔汽车
需求3:将代码进行解耦
#! /usr/bin/env python
# -*- coding:utf-8 -*-
class Car_store:
def car_order(self,car_type):
return select_car(car_type)
def select_car(car):
if car == "Suonata":
return Suonata()
elif car == "Mingtu":
return Mingtu()
class Car:
def move(self):
print("车辆正在移动....")
def music(self):
print("正在播放音乐....")
def stop(self):
print("车辆已停止.....")
class Suonata(Car):
def print_name(self):
print("这是一辆索纳塔汽车")
class Mingtu(Car):
def print_name(self):
print("这是一辆名图汽车")
p=Car_store()
car=p.car_order('Suonata')
car.music()
car.print_name()
以上实例实行结果: 正在播放音乐.... 这是一辆索纳塔汽车
注释:首先我们实例化一个实例“p”, 在调用的时候还是调用的Car_store这个类,但是我们又定义了一个函数select_cat;当我们执行p.car_order的时候会执行select_car这个函数,并把自己形参car_type接到到的汽车类型“Suonata”传递select_car这个函数作为实参,然后运行select_car这个函数,这个函数判断传入的参数是那种汽车类型,然后return不同的“类”给car变量