9.1创建和使用类
动手试一试
9-1
class Restaurant():
def __init__(self,name,type):
self.name=name
self.type=type
def describe_restaurant(self):
print(self.name+"is a "+self.type+"restaurant")
def open_restaurant(self):
print("welcome to"+self.name)
my_restaurant=Restaurant("MIMO","chinese food")
my_restaurant.describe_restaurant()
my_restaurant.open_restaurant()
9-3
class user():
def __init__(self,first,last,age):
self.name=first+last
self.age=age
def describe_user(self):
print(self.name+" is a "+str(self.age)+"girl")
def greet_user(self):
print("hello "+self.name)
my_friend=user("zhang ","lin jun",19)
my_friend.describe_user()
my_friend.greet_user()
9.2使用类和实例
*修改属性的值
1、直接修改属性
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer=0
def descript_name(self):
full_name=str(self.year)+" "+self.make+" "+self.model+" "+str(self.odometer)
return full_name
def read_odometer(self):
print("this car has "+str(self.odometer)+" mile on it")
my_car=Car("audi","a4",2017)
print(my_car.descript_name())
my_car.odometer=88
my_car.read_odometer()
2、通过方法修改属性的值
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.meter=10
def read_meter(self):
print("the car has "+str(self.meter)+" on it")
def update_meter(self,milage):
if milage >= self.meter:
self.meter=milage
else:
print("you can't roll back an odometer")
my_car=Car("audi","a4","2016")
my_car.update_meter(17)
my_car.read_meter()
3、通过方法对属性的值进行递增
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.meter=10
def read_meter(self):
print("the car has "+str(self.meter)+" on it")
def update_meter(self,milage):
if milage >= self.meter:
self.meter=milage
else:
print("you can't roll back an odometer")
def increment_odometer(self,miles):
self.meter+=miles
my_car=Car("audi","a4","2016")
my_car.update_meter(0)
my_car.read_meter()
my_car.increment_odometer(100)
my_car.read_meter()
9.3
1、重写父类
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer=0
def descript_car(self):
full_name=self.make+self.model+str(self.year)
return full_name
def read_odometer(self):
print("this car has"+str(self.year)+"miles on it")
def update_odometer(self,mileage):
if mileage>=self.odometer:
self.odometer=mileage
else:
print("you can't roll back an odometer")
def increment_odometer(self,miles):
self.odometer+=miles
class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery=90
def read_odometer(self):
print("nothing in here")
my_car=ElectricCar("E","F",2018)
my_car.read_odometer()
2、将实例用作属性
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
class Battery():
def __init__(self,battery_size=90):
self.battery_size=battery_size
def descript_battery(self):
print("the car has a"+str(self.battery_size)+"battery size")
def get_range(self):
if self.battery_size==70:
range=240
else:
range=270
message="this car can go approximately"+str(range)
message+="miles on a full charge"
print(message)
class Electric_car(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery=Battery()
my_car=Electric_car("tesla","model",2017)
my_car.battery.descript_battery()
my_car.battery.get_range()
动手试一试
9-6冰淇淋小店
class Restaurant():
def __init__(self,restaurant_name,restaurant_cuisine):
self.restaurant_name=restaurant_name
self.restaurant_cuisine=restaurant_cuisine
self.number_served=0
def open_restaurant(self):
print(self.restaurant_name+" is open")
def set_number_served(self,number):
while self.number_served<number:
self.number_served+=1
class icecreamStand(Restaurant):
def __init__(self,restaurant_name,restaurant_cuisine):
super().__init__(restaurant_name,restaurant_cuisine)
self.flavor=["banana","apple","strawberry"]
def show_icecream(self):
for s in self.flavor:
print(s)
my_icecream=icecreamStand("MIMO","CHINESE FOOD")
my_icecream.show_icecream()
9-7管理员
class Admin():
def __init__(self,firstname,lastname):
self.firstname=firstname
self.lastname=lastname
def description(self):
full_description=self.firstname+" "+self.lastname
print(full_description)
def greet_user(self):
print("hello"+" "+self.firstname+" "+self.lastname)
class User(Admin):
def __init__(self,firstname,lastname):
super().__init__(firstname,lastname)
self.privileges=["can add post","can delaete post","can ban user"]
def show_privileges(self):
print(self.privileges)
the_user=User("gabby","alice")
the_user.show_privileges()
9-8权限
class Admin():
def __init__(self,firstname,lastname):
self.firstname=firstname
self.lastname=lastname
def description(self):
full_description=self.firstname+" "+self.lastname
print(full_description)
def greet_user(self):
print("hello"+" "+self.firstname+" "+self.lastname)
class Privilege():
def __init__(self):
self.privileges=["can add post","can delaete post","can ban user"]
def show_privileges(self):
print(self.privileges)
class User(Admin):
def __init__(self,firstname,lastname):
super().__init__(firstname,lastname)
self.privileges=Privilege()
the_user=User("gabby","alice")
the_user.privileges.show_privileges()
9-9电瓶升级
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
def get_descriptive_name(self):
long_name=str(self.year)+""+self.make+" "+self.model
return long_name
class Battery():
def mybattery(self,battery_size):
self.battery_size=battery_size
def get_range(self):
if self.battery_size==70:
range = 240
else:
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()
my_car=ElectricCar("tesla","model",2016)
my_car.battery.mybattery(70)
my_car.battery.get_range()