练习9-6冰淇淋小店
#练习9.6冰淇淋小店
class Restaurant:
def __init__(self,restaurant_name,cuisine_type):
self.n=restaurant_name
self.ct=cuisine_type
self.num=0#今天人数
self.total=2000#开店以来总人数
def describe_restaurant(self):
print(f"name is {self.n}.")
print(f"cuisine type {self.ct}.")
def open_restaurant(self):
print("The restaurant is open.")
def number_served(self):#总人数
print("there had been "+str(self.total)+" people have dinner here.")
def increment(self,number):#增加量
self.total+=number
def set_number_served(self):#一天的人数
print("today the restaurant has served "+str(self.num)+" people.")
class IceCream(Restaurant):
def __init__(self,restaurant_name,cuisine_type,flavors):
super().__init__(restaurant_name,cuisine_type)
self.flavors=flavors
def printname(self):
print(self.n,self.ct,self.flavors)
x=IceCream('zhangsan','iceream',['apple','pear','mango','liche'])
x.printname()
练习9-7管理员
#练习9-7管理员
class User:
def __init__(self,first_name,last_name,age):
self.a=first_name
self.b=last_name
self.c=age
def describe_user(self):
print(f"user name: {self.a} {self.b},age:{self.c}.")
def greet_user(self):
print(f"Hello,{self.a}.")
class Admin(User):
def __init__(self,first_name,last_name,age,privileges):#子类的属性初始化
super().__init__(first_name,last_name,age)#继承父类的属性
self.privileges=privileges
print('name:',self.a,self.b,'age:',str(self.c))
def show_privileges(self):
print('privileges are:',self.privileges)
x=Admin('zhang','san',19,['ad post','delete post','ban user'])
x.show_privileges()
练习9-8权限
#练习9-8权限
class User:
def __init__(self,first_name,last_name,age):
self.a=first_name
self.b=last_name
self.c=age
def describe_user(self):
print(f"user name: {self.a} {self.b},age:{self.c}.")
def greet_user(self):
print(f"Hello,{self.a}.")
class Privileges:
def __init__(self):
self.privileges=['add post','delete post','ban user']
def show_privileges(self):
print('privileges are:',self.privileges)
class Admin(User):
def __init__(self,first_name,last_name,age):
super().__init__(first_name,last_name,age)
self.privileges=Privileges()#添加一个privileges的属性,向它传递privileges类创建的实例
#注意,此处容易漏写
print('name:',self.a,self.b,'age:',str(self.c))
x=Admin('zhang','san',19)
x.privileges.show_privileges()
9-9电瓶升级
class Car:
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer_reading=0
def get_descriptive_name(self):
longname=f"{self.year} {self.make} {self.model}"
return longname.title()
def read_odometer(self):
print(f"this car has "+str(self.odometer_reading)+" miles on it.")
def update_odometer(self,mileage):
if mileage>self.odometer_reading:
self.odometer_reading=mileage
else:
print("you can't roll back an odometer.")
def increment_odometer(self,mileage):
self.odometer_reading+=mileage
class Battery():
def __init__(self,battery_size=70):
self.battery_size=battery_size
def describe_battery(self):
print("This car has a "+str(self.battery_size)+"-kwh battery.")
def get_range(self):
if self.battery_size==70:
range=240
elif self.battery_size==85:
range=270
message="This car can go approximately "+str(range)
message+=" miles on a full charge."
print(message)
def upgrade_battery(self):
if self.battery_size!=85:
self.battery_size=85
class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery=Battery()
def fill_gas_tank(self):#重写父类的方法,方法要同名,重新定义即可
print("This car doesn't need a gas tank!")
my_tesla=ElectricCar('tesla','model s',2016)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()
my_tesla.battery.upgrade_battery()#进行电池升级
my_tesla.battery.describe_battery()#再次描述电池
my_tesla.battery.get_range()#获得里程