Python语法基础06(类)

创建和使用类

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()

代码的效果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值