py的交♂易

2018-03-05

2018-03-05  本文已影响0人  果轰桃

用类的实例化提高效率

一、类简介

模拟一家餐厅,餐厅有名字restaurant_name菜的类型cuisine_type

class Restaurant():
    '''模拟一家餐馆'''
    def __init__(self,restaurant_name,cuisine_type):
        '''初始化name,type'''
        self.name = restaurant_name
        self.type = cuisine_type

    def describe_restaurant(self):
        '''打印餐厅基本信息'''
        print(self.name.title() +  ' sells ' + self.type.title() + ' dishes')

    def open_restaurant(self):
        '''描述餐厅状态'''
        print('OPENING, WELCOME!')

    def number_served(self):
        '''打印来过餐厅的人数'''
        print(str(self.served) + ' people have been ' + self.name.title())

文件存储为restaurantCLS.py
现在要增加一个餐厅光顾总数的属性,添加self.served = 0
def __init__(self,restaurant_name,cuisine_type):
此时,我们要增加餐厅光顾过的总数,而且餐厅中来过人数是不能减少的,于是有:

class Restaurant():
    '''模拟一家餐馆'''
    def __init__(self,restaurant_name,cuisine_type):
        '''初始化name,type'''
        self.name = restaurant_name
        self.type = cuisine_type
        self.served = 0
        #增加了self.served属性·····································<<<<<<<<<<<<<<<<<<<<<<<<<<

    def describe_restaurant(self):
        '''打印餐厅基本信息'''
        print(self.name.title() +  ' sells ' + self.type.title() + ' dishes')

    def open_restaurant(self):
        '''描述餐厅状态'''
        print('OPENING, WELCOME!')

增加:

    def number_served(self):
        '''打印来过餐厅的人数'''
        print(str(self.served) + ' people have been ' + self.name.title())

    def set_number_served(self,number):
        '''设置就餐过的人数'''
        if number >= self.served :
            self.served = number
        else:
            print('Please check yor number')

    def increase_number_served(self,number):
        '''增加就餐人数'''
        if number>= 0:
            self.served += number
        else:
            print('you can\'t decrease this number')

小结

二、继承和导入类

import restaurantCLS

class IceCreamStand(restaurantCLS.Restaurant):
    '''创建Restaurant子类'''
    def __init__(self,restaurant_name,cuisine_type):
        super().__init__(restaurant_name,cuisine_type)
        #super()声明参数············································<<<<<<<<<<<<<<<<<<<<
        self.tastes = ['strawberry','coconut','vanilla']

    def output_taste(self):
        '''展示冰淇淋店的口味'''
        print('WE HAVB :')
        for taste in self.tastes:
            print(taste)

存储为IceCreamStandCLS
导入类和导入函数基本一致,包括

  1. from restaurantCLS import Restaurant(或from restaurantCLS import Restaurant,others,or_something)
     不需要声明模块名
  2. from restaurantCLS import Restaurant as RES
     不需要声明模块名,且函数名在此程序中替换为 RES
  3. import restaurantCLS as RESCLS
     需要声明模块名,但模块名在此程序中替换为RESCLS
  4. from restaurantCLS import *
     引入此模块中所有的函数 (2、3、4并不推荐使用,只为能看懂别人的代码)
小结

三、主函数中类的导入

from IceCreamStandCLS import IceCreamStand

my_restaurant = IceCreamStand('Ice Castle','cool')
my_restaurant.set_number_served(44)
my_restaurant.describe_restaurant()
my_restaurant.number_served()

当只导入子类IceCreamStand(),未导入Restaurant()时,函数正常运行,可能是子类中已经导入了父类,所以只导入子类文件时,父类文件也随子类一并导入

image.png
上一篇 下一篇

猜你喜欢

热点阅读