深度之眼(十三)——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("新增里程数不能为负!")
相关文章
|
6天前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。
|
6天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
6天前
|
设计模式 机器学习/深度学习 前端开发
Python 高级编程与实战:深入理解设计模式与软件架构
本文深入探讨了Python中的设计模式与软件架构,涵盖单例、工厂、观察者模式及MVC、微服务架构,并通过实战项目如插件系统和Web应用帮助读者掌握这些技术。文章提供了代码示例,便于理解和实践。最后推荐了进一步学习的资源,助力提升Python编程技能。
|
5天前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
|
5天前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
5天前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建微服务架构
本文深入探讨了 Python 中的微服务架构,介绍了 Flask、FastAPI 和 Nameko 三个常用框架,并通过实战项目帮助读者掌握这些技术。每个框架都提供了构建微服务的示例代码,包括简单的 API 接口实现。通过学习本文,读者将能够使用 Python 构建高效、独立的微服务。
|
5天前
|
消息中间件 分布式计算 并行计算
Python 高级编程与实战:构建分布式系统
本文深入探讨了 Python 中的分布式系统,介绍了 ZeroMQ、Celery 和 Dask 等工具的使用方法,并通过实战项目帮助读者掌握这些技术。ZeroMQ 是高性能异步消息库,支持多种通信模式;Celery 是分布式任务队列,支持异步任务执行;Dask 是并行计算库,适用于大规模数据处理。文章结合具体代码示例,帮助读者理解如何使用这些工具构建分布式系统。
|
10月前
|
Java 程序员 Python
python学习13-面向对象的三大特征、特殊方法和特殊属性、类的浅拷贝和深拷贝
python学习13-面向对象的三大特征、特殊方法和特殊属性、类的浅拷贝和深拷贝
29.从入门到精通:Python3 面向对象继承 多继承 方法重写 类属性与方法
29.从入门到精通:Python3 面向对象继承 多继承 方法重写 类属性与方法
28.从入门到精通:Python3 面向对象 面向对象技术简介 类定义 类对象 类的方法
28.从入门到精通:Python3 面向对象 面向对象技术简介 类定义 类对象 类的方法

热门文章

最新文章

推荐镜像

更多