创建和使用类
class Car:
"""模拟车的简单尝试"""
#__init__方法在类创建的时候就会调用
def __init__(self,name,car_name,series):
self.name=name
self.car_name=car_name
self.series=series
def drive(self):
print(f"{self.name}已经开{self.car_name}{self.series}上路了")
def praise(self):
print(f"{self.name}是秋名山车神")
my_car=Car("张三","cadillac","2023ct6")
friend_car=Car("李四","bmw","2023x5")
my_car.drive()
friend_car.drive()
my_car.praise()
friend_car.praise()
效果:
通过方法修改属性的值(类似于封装的思想)
class Restaurant:
"""创建一个描述餐厅的类"""
def __init__(self,restaurant_name,cuisine_type):
self.restaurant_name=restaurant_name
self.cuisine_type=cuisine_type
self.number_served=0
#定义一个描述餐厅的方法
def describe_restaurant(self):
print(f"The restaurant name is {self.restaurant_name},and the type of restaurant is {self.cuisine_type}")
#定义一个描述餐厅正在营业的方法
def open_restaurant(self):
print(f"{self.restaurant_name} is opening")
#定义一个增加餐厅服务人数的方法
def increment_number_served(self,increment_number):
self.number_served+=increment_number
#定义一个设定餐厅服务人户的方法
def set_restaurant_number_served(self,number_served):
if(number_served>0):
self.number_served=number_served
else:
print("u can not set number of served less than 0")
my_restaurant=Restaurant("七点半咖啡","咖啡馆")
my_restaurant.describe_restaurant()
my_restaurant.set_restaurant_number_served(10)
print(my_restaurant.number_served)
my_restaurant.increment_number_served(10)
print(my_restaurant.number_served)
效果:
继承
- 子类继承父类所有属性和方法,同时也可以定义自己的属性与方法
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):
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
print(f"this car has{self.odometer_reading} miles on it")
def update_odometer(self,miles):
if miles>self.odometer_reading:
self.odometer_reading=miles
else:
print("u can not roll back an odometer")
def increment_odometer(self,miles):
self.odometer_reading+=miles
#子类继承父类,继承父类所有属性与方法,同时还可以定义自己的属性与方法
class Electric_Car(Car):
"""电车"""
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.miles=500
#定义一个描述电车能行驶多少公里的方法
def describe_electric_car_miles(self):
print(f"the {self.model} can drive {self.miles} kilometer")
#定义设置电池公里数的方法
def set_miles(self,miles):
if(miles>0):
self.miles=miles
else:
print("the input is wrong")
my_electric_car=Electric_Car('byd',"han","2023")
print(my_electric_car.get_descriptive_name())
my_electric_car.describe_electric_car_miles()
my_electric_car.set_miles(600)
my_electric_car.describe_electric_car_miles()
效果:
重写父类方法
- 在子类中重写read_odometer方法,然后调用
def read_odometer(self):
print(f"the electric car has {self.odometer_reading} odometer")
效果:
将是实例做属性
- 把对电动汽车电瓶的相关描述封装到Battery类中
- 在子类继承父类时,创建一个battery实例
更改的代码如下
class Battery:
"""描述电动汽车电瓶相关信息"""
def __init__(self,battery_size=75):
self.battery_size=battery_size
def describe_battery_size(self):
print(f"this car has a {self.battery_size}-kwh battery")
class Electric_Car(Car):
"""电车"""
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.miles=500
self.battery=Battery()
该
my_electric_car.battery.describe_battery_size()
代码的效果如下: