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

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

引子——类的引入


可以看我之前写的文章:

嵌入式C++(二)

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


7.1 类的定义


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


7.1.1 类的命名


首字母大写

0a2653c851af460fa595bd959398a8f1.png2d65d23f6d4748949b924e4057485923.png


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 类的方法


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

2e9b90b2ca334476abebe75bafe6eeaa.png


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)

4cebaac233b3433da32a72337a77fc60.png


7.2.4 修改属性


1、直接修改


0a2653c851af460fa595bd959398a8f1.png


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

2d65d23f6d4748949b924e4057485923.png


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("新增里程数不能为负!")

2e9b90b2ca334476abebe75bafe6eeaa.png


7.3 类的继承


4cebaac233b3433da32a72337a77fc60.png6de278e6d6694ce5bb08e7e842b7e74b.png


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("新增里程数不能为负!")
相关文章
|
18天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
6天前
|
Python
[oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅
本文回顾了从模块导入变量和函数的方法,并通过一个求和程序实例,讲解了Python中输入处理、类型转换及异常处理的应用。重点分析了“明了胜于晦涩”(Explicit is better than implicit)的Python之禅理念,强调代码应清晰明确。最后总结了加法运算程序的实现过程,并预告后续内容将深入探讨变量类型的隐式与显式问题。附有相关资源链接供进一步学习。
19 4
|
8天前
|
Java API Docker
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
以上内容是一个简单的实现在Java后端中通过DockerClient操作Docker生成python环境并执行代码,最后销毁的案例全过程,也是实现一个简单的在线编程后端API的完整流程,你可以在此基础上添加额外的辅助功能,比如上传文件、编辑文件、查阅文件、自定义安装等功能。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
|
16天前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
|
16天前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
17天前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建微服务架构
本文深入探讨了 Python 中的微服务架构,介绍了 Flask、FastAPI 和 Nameko 三个常用框架,并通过实战项目帮助读者掌握这些技术。每个框架都提供了构建微服务的示例代码,包括简单的 API 接口实现。通过学习本文,读者将能够使用 Python 构建高效、独立的微服务。
|
17天前
|
消息中间件 分布式计算 并行计算
Python 高级编程与实战:构建分布式系统
本文深入探讨了 Python 中的分布式系统,介绍了 ZeroMQ、Celery 和 Dask 等工具的使用方法,并通过实战项目帮助读者掌握这些技术。ZeroMQ 是高性能异步消息库,支持多种通信模式;Celery 是分布式任务队列,支持异步任务执行;Dask 是并行计算库,适用于大规模数据处理。文章结合具体代码示例,帮助读者理解如何使用这些工具构建分布式系统。
|
5月前
|
安全 测试技术 数据库
Python编程--sys模块及OS模块简单用例
Python编程--sys模块及OS模块简单用例
66 1
|
5月前
|
JSON 数据格式 Python
Python编程:利用JSON模块编程验证用户
Python编程:利用JSON模块编程验证用户
44 1
|
5月前
|
数据处理 Python
Python编程-利用datetime模块生成当前年份之前指定的间隔所有年份的日期列表和csv文件
Python编程-利用datetime模块生成当前年份之前指定的间隔所有年份的日期列表和csv文件
50 1