深度之眼(十三)——Python:类-面向对象的编程

引子——类的引入

可以看我之前写的文章:

嵌入式C++(二)

里面详细讲了类的相关概念

7.1 类的定义

三要素:类名、属性、方法

7.1.1 类的命名

首字母大写
在这里插入图片描述
在这里插入图片描述

7.1.2 类的属性

> # def _init_(self, 要传递的参数)  舒适化类的属性
class Car():
	"""模拟汽车"""
	
	def _init_(self, brand, model, year):
		"""初始化汽车属性"""    #相当于类内部的变量
		self.brand = brand   #汽车的品牌
		self.model = model   #汽车的型号
		self.year = year     #汽车的出厂年份
		self.mileage = 0     #新车总里程初始化为0
	

7.1.3 类的方法

# 相当于类内部定义的函数

在这里插入图片描述

7.2 创建实例

7.2.1 实例的创建

将实例赋值给对象,实例化过程中,传入相应的参数
V=类名(必要的初始化参数)

my_new_car = Car("Audi", "A6", 2018)

7.2.2 访问属性

类名.属性名

print(my_new_car.brand)
print(my_new_car.model)
print(my_new_car.year)

7.2.3 调用方法

class Car():
    """模拟汽车"""
    
    def __init__(self, brand, model, year):
        """初始化汽车属性"""    #相当于类内部的变量
        self.brand = brand      #汽车的品牌
        self.model = model      #汽车的型号
        self.year = year        #汽车的出厂年份
        self.mileage = 0        #新车总里程初始化为0
        
    def get_main_information(self):
        print("品牌:{}  型号: {} 出厂年份: {}".format(self.brand, self.model, self.year))
        
    def get_mileage(self):
        return "汽车总里程:{}公里".format(self.mileage)

在这里插入图片描述

7.2.4 修改属性

1、直接修改
在这里插入图片描述
2.通过方法修改属性

class Car():
    """模拟汽车"""
    
    def __init__(self, brand, model, year):
        """初始化汽车属性"""    #相当于类内部的变量
        self.brand = brand      #汽车的品牌
        self.model = model      #汽车的型号
        self.year = year        #汽车的出厂年份
        self.mileage = 0        #新车总里程初始化为0
        
    def get_main_information(self):
        print("品牌:{}  型号: {} 出厂年份: {}".format(self.brand, self.model, self.year))
        
    def get_mileage(self):
        return "汽车总里程:{}公里".format(self.mileage)
    
    def set_mileage(self, distance):
        self.mileage = distance
my_old_car = Car("BBB","铃翎",2000)
print(my_old_car.get_mileage())
my_old_car.set_mileage(8000)
print(my_old_car.get_mileage())

在这里插入图片描述

3. 继续扩展

  • 禁止设置负里程
  • 将每次的里程数累加
class Car():
    """模拟汽车"""
    
    def __init__(self, brand, model, year):
        """初始化汽车属性"""    #相当于类内部的变量
        self.brand = brand      #汽车的品牌
        self.model = model      #汽车的型号
        self.year = year        #汽车的出厂年份
        self.mileage = 0        #新车总里程初始化为0
        
    def get_main_information(self):
        print("品牌:{}  型号: {} 出厂年份: {}".format(self.brand, self.model, self.year))
        
    def get_mileage(self):
        return "汽车总里程:{}公里".format(self.mileage)
    
    def set_mileage(self, distance):
        if distance > 0:
            self.mileage = distance
        else:
            print("里程数不能为负!")
            
    def increment_mileage(self, distance):
        if distance > 0:
            self.mileage += distance
        else:
            print("新增里程数不能为负!")

在这里插入图片描述

7.3 类的继承

在这里插入图片描述

在这里插入图片描述

7.3.1 简单的继承

父类

class Car():
    """模拟汽车"""
    
    def __init__(self, brand, model, year):
        """初始化汽车属性"""    #相当于类内部的变量
        self.brand = brand      #汽车的品牌
        self.model = model      #汽车的型号
        self.year = year        #汽车的出厂年份
        self.mileage = 0        #新车总里程初始化为0
        
    def get_main_information(self):
        print("品牌:{}  型号: {} 出厂年份: {}".format(self.brand, self.model, self.year))
        
    def get_mileage(self):
        return "汽车总里程:{}公里".format(self.mileage)
    
    def set_mileage(self, distance):
        if distance > 0:
            self.mileage = distance
        else:
            print("里程数不能为负!")
            
    def increment_mileage(self, distance):
        if distance > 0:
            self.mileage += distance
        else:
            print("新增里程数不能为负!")

子类

class 子类名字(父类名):

* 新建一个电动汽车
class EletricCar(Car):
    """模拟电动汽车"""
    
    def __init__(self, brand, model, year):
        """初始化电动汽车属性"""
        super().__init__(brand, model, year)  #声明继承父类的属性
my_new_electric_car = EletricCar("FFF","禹",2001)
my_new_electric_car.get_main_information()

在这里插入图片描述

7.3.2 给子类添加属性和方法

在这里插入图片描述

在这里插入图片描述

7.3.3 重写父类的方法——多态

在这里插入图片描述

7.3.4 用在类中的实例

把电池抽象成一个对象
逻辑更加清晰
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

posted @ 2022-07-16 10:33  周末不下雨  阅读(24)  评论(0编辑  收藏  举报