需求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变量