第7天:面向对象编程(OOP)

学习目标

  • 理解面向对象编程的基本概念
  • 掌握类和对象的定义和使用
  • 学习属性和方法的定义和使用
  • 理解继承和多态的概念
  • 学习类的特殊方法
学习内容
1. 面向对象编程基本概念

面向对象编程(OOP)是一种编程范式,使用“对象”来设计应用程序和计算机程序。对象是类的实例,类是创建对象的蓝图。

2. 定义类和创建对象
  • 定义类:

class ClassName:def __init__(self, param1, param2):self.attr1 = param1self.attr2 = param2
  • 创建对象:

obj = ClassName(value1, value2)

  • 示例:

class Dog:def __init__(self, name, age):self.name = nameself.age = agedef bark(self):print(f"{self.name} is barking")my_dog = Dog("Buddy", 3)
print(my_dog.name)  # 输出: Buddy
print(my_dog.age)   # 输出: 3
my_dog.bark()       # 输出: Buddy is barking
3. 属性和方法
  • 属性(Attributes): 类中的变量。
  • 方法(Methods): 类中的函数。
示例解析
  • __init__ 方法是一个特殊方法,在创建对象时自动调用,用于初始化对象的属性。
  • self 参数是指向当前对象的引用,必须作为第一个参数传递。
4. 继承和多态
  • 继承(Inheritance): 一个类(子类)可以继承另一个类(父类)的属性和方法。

class Animal:def __init__(self, name):self.name = namedef speak(self):passclass Dog(Animal):def speak(self):return f"{self.name} says Woof!"class Cat(Animal):def speak(self):return f"{self.name} says Meow!"my_dog = Dog("Buddy")
my_cat = Cat("Kitty")
print(my_dog.speak())  # 输出: Buddy says Woof!
print(my_cat.speak())  # 输出: Kitty says Meow!
  • 多态(Polymorphism): 不同类的对象可以通过相同的接口调用,表现出不同的行为。

示例解析
  • DogCat 类继承自 Animal 类,并重写了 speak 方法。
5. 类的特殊方法
  • __str__ 方法: 返回对象的字符串表示。

class Dog:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"{self.name} is {self.age} years old"my_dog = Dog("Buddy", 3)
print(my_dog)  # 输出: Buddy is 3 years old
  • __len__ 方法: 返回对象的长度。

class MyList:def __init__(self, items):self.items = itemsdef __len__(self):return len(self.items)my_list = MyList([1, 2, 3, 4])
print(len(my_list))  # 输出: 4
今日任务
  1. 定义类和创建对象:

    • 定义一个表示汽车的类Car,具有makemodelyear属性。
    • 创建一个Car对象并打印其属性。
  2. 属性和方法:

    • Car类添加一个方法description,返回汽车的描述。
    • 调用description方法并打印结果。
  3. 继承和多态:

    • 定义一个表示电动车的类ElectricCar,继承自Car类,添加battery_size属性。
    • ElectricCar类添加一个方法describe_battery,返回电池描述。
    • 创建一个ElectricCar对象,调用descriptiondescribe_battery方法并打印结果。
  4. 类的特殊方法:

    • Car类添加__str__方法,返回汽车的字符串表示。
    • 打印Car对象,查看输出结果。
  5. 编写并运行以下示例代码:

    # 定义Car类
    class Car:def __init__(self, make, model, year):self.make = makeself.model = modelself.year = yeardef description(self):return f"{self.year} {self.make} {self.model}"def __str__(self):return self.description()# 创建Car对象
    my_car = Car("Toyota", "Corolla", 2020)
    print(my_car)  # 输出: 2020 Toyota Corolla
    print(my_car.description())  # 输出: 2020 Toyota Corolla# 定义ElectricCar类,继承自Car
    class ElectricCar(Car):def __init__(self, make, model, year, battery_size):super().__init__(make, model, year)self.battery_size = battery_sizedef describe_battery(self):return f"This car has a {self.battery_size}-kWh battery."# 创建ElectricCar对象
    my_electric_car = ElectricCar("Tesla", "Model S", 2021, 100)
    print(my_electric_car)  # 输出: 2021 Tesla Model S
    print(my_electric_car.describe_battery())  # 输出: This car has a 100-kWh battery.
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/864598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云海中的坚固灯塔:等保测评视角下的混合云安全策略与合规性深度剖析

在数字化浪潮的推动下,混合云架构以其独特的优势成为企业转型升级的得力助手。然而,随着数据资产向云端迁移,安全风险与合规挑战亦如影随形,成为企业前行的绊脚石。等保测评作为我国网络安全的一道坚实屏障,对于护航云…

编程高手的必备技能:C语言函数库构建——模块化编程,提升代码重用性

1.引言 在编程的世界里,C语言以其高效、灵活的特点,一直以来都备受编程高手的青睐。然而,随着软件规模的不断扩大,如何提高代码的可维护性、可读性和重用性,成为了摆在程序员面前的一大挑战。本文将深入探讨C语言函数…

化妆品安全问答:个人护理产品| FDA

「个人护理品」是否都作为化妆品监管?是一些药物还是「药妆」? 人们经常使用“个人护理产品”这个术语来指代我们在药店和百货商店的健康和美容部门常见的各种各样的物品。根据法律规定,这些产品可能属于许多不同的类别。 用于清洁或美容的…

Gartner发布软件供应链安全指南:软件供应链攻击造成的损失将从 2023 年的460亿美元上升到2031年的1380亿美元

软件供应链安全是一个关键的风险和合规性问题,但大多数组织都以分散的方式处理它。缺乏一个包罗万象的框架会遗留安全漏洞。通过实施三支柱框架,安全和风险管理领导者可以确保广泛的保护。 主要发现 对软件供应链的攻击给组织带来重大的安全、监管和运营…

【深度学习】pytorch训练中的一个大坑

使用的命令:iostat -x 5 可以看到 ssd的利用率已经满了。 之前在的数据集放在了 hdd上,训练结果特别慢。 所以我把它移动到了ssd上,然后训练参数用的 resume, 但是!!!!它把历史记住…

【C语言】19.预处理详解

文章目录 1.预定义符号2.#define定义常量3.#define定义宏4.带有副作用的宏参数5.宏替换的规则6.宏函数的对比7.#和##7.1 #运算符7.2 ## 运算符 8.命名约定9.#undef10.命令行定义11.条件编译12.头文件的包含12.1 头⽂件被包含的⽅式12.1.1 本地⽂件包含12.1.2 库⽂件包含 12.2 嵌…

学懂C#编程:常用高级技术——学会C#的高级特性 反射

反射(Reflection)是C#中的一项高级特性,它允许程序在运行时检查和操作程序集、模块、类型等元数据信息。通过反射,你可以在不知道类型信息的情况下,动态地创建对象、调用方法、访问属性等。 反射的基本概念 反射的核…

甲骨文首次将LLMs引入数据库,集成Llama 3和Mistral,和数据库高效对话

信息时代,数据为王。数据库作为数据存储&管理的一种方式,正在以势不可挡的趋势与AI结合。 前有OpenAI 收购了数据库初创公司 Rockset,引发广泛关注;Oracle公司(甲骨文)作为全球最大的信息管理软件及服…

农学VR虚拟仿真情景实训教学

在农学课堂上,VR虚拟仿真情景的应用正逐渐成为一种创新的教学方式。 随着科技的飞速发展,VR技术以其沉浸式体验特点,让学生仿佛置身于另一个世界。在农学课堂上,通过VR技术,学生可以身临其境地感受农田的广袤&#xf…

ArtTS系统能力-窗口管理的学习(3.2)

上篇回顾: ArtTS系统能力-通知的学习(3.1) 本篇内容: ArtTS系统能力-窗口管理的学习(3.2) 一、 知识储备 1. 基本概念 窗口渲染式能力:指对状态栏、导航栏等系统窗口进行控制,减…

计算机硬件(考点篇)试题

波特率: 在电子通信领域,波特(Baud)即调制速率,指的是有效数据讯号调制载波的速率,即单位时间内载波调制状态变化的次数。波特(Baud,单位符号:Bd)。 波特率…

PHP景区旅游多商户版微信小程序系统源码

解锁景区新玩法!​ 引言:一站式旅行新体验 厌倦了传统景区的单调游览?想要一次旅行就能体验多种风情?那么,“景区旅游多商户版”绝对是你的不二之选!这个创新模式将景区内多个商户资源整合,为…

【MySQL备份】Percona XtraBackup增量备份实战篇

目录 1.前言 2.准备工作 2.1.环境信息 2.2.创建备份目录 2.3.配置/etc/my.cnf文件 2.4.授予root用户BACKUP_ADMIN权限 3.增量备份 3.1.第一步:全量备份 3.2.第二步:增量备份 3.3.第三步:再次增量备份 4.准备备份 4.1.准备全量备…

windows自带的性能采集配置方法

1 计算机---右键---管理 2 性能--数据收集器几---用户自定义 3新建--输入程序名称 并在此页面选择--手动创建(高级) 4 下一步--勾选性能计数器---下一步 5 添加--找到process Processor Time User Time Handle Count ID Process Private Bytes…

爬虫逆向实战(42)-某巢登陆(AES、MD5、RSA、滑块验证码)

一、数据接口分析 主页地址:某巢 1、抓包 通过抓包可以发现在登录时,网站首先请求captcha/querySlideImage/来获取滑块验证码的图片,然后请求captcha/checkCode/接口来验证滑块验证码。滑块验证码校验成功后,请求noshiro/getPu…

理解MySQL核心技术:存储过程与函数的强大功能

在大型应用程序和复杂的数据库操作中,存储过程与函数扮演着至关重要的角色。它们不仅可以提高代码的可维护性,还能加强数据库的安全性和性能。本篇文章将深入探讨MySQL存储过程与函数的基础知识、创建、管理及其在实际应用中的优势。 什么是存储过程和函…

无人机热成像分析图谱原理

一、热成像原理 热成像,也称为红外热成像或红外成像,是一种利用红外辐射(通常指的是热辐射)来获取物体表面温度分布信息的成像技术。在无人机上集成热成像传感器,可以远程捕获并分析目标物体的热特征,不受…

python输入位置的坐标(即经纬度),计算两点的距离结果保留两位

可以使用geopy库中的geodesic函数来计算两点之间的距离。以下是实现此功能的示例代码: python from geopy.distance import geodesic # 输入点1的经纬度 lat1 float(input("请输入点1的纬度:")) lon1 float(input("请输入点1的经度&a…

java-Lambda表达式1

## Java中的Lambda表达式 ### 1. 简介 Lambda表达式是Java 8引入的一项重要新特性,它是Java对函数式编程支持的一部分。Lambda表达式允许将匿名函数作为参数传递,简化了代码,提升了可读性和可维护性。Lambda表达式的主要目的是使代码更加简…

【高性能服务器】多线程并发模型

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​​ 对于常见的C/…