第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.rhkb.cn/news/370188.html

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

相关文章

Android在framework层添加自定义服务的流程

环境说明 ubuntu16.04android4.1java version “1.6.0_45”GNU Make 3.81gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 可能有人会问,现在都2024了怎么还在用android4版本,早都过时了。确实,现在最新的都是Android13、And…

基于YOLOv5的人脸目标检测

本文是在之前的基于yolov5的人脸关键点检测项目上扩展来的。因为人脸目标检测的效果将直接影响到人脸关键点检测的效果,因此本文主要讲解利用yolov5训练人脸目标检测(关键点检测可以看我人脸关键点检测文章) 基于yolov5的人脸关键点检测:人脸关键点检测…

复现YOLO_ORB_SLAM3_with_pointcloud_map项目记录

文章目录 1.环境问题2.遇到的问题2.1编译问题1 monotonic_clock2.2 associate.py2.3 associate.py问题 3.运行问题 1.环境问题 首先环境大家就按照github上的指定环境安装即可 环境怎么安装网上大把的资源,自己去找。 2.遇到的问题 2.1编译问题1 monotonic_cloc…

Android增量更新----java版

一、背景 开发过程中,随着apk包越来越大,全量更新会使得耗时,同时浪费流量,为了节省时间,使用增量更新解决。网上很多文章都不是很清楚,没有手把手教学,使得很多初学者,摸不着头脑&a…

jmeter测试工具学习

1.双击jar包打开,发现那个bat打不开 2.新建plan之后编辑添加线程组 会加入500*5次请求 3.添加HTTP请求 添加字段 为了让http请求发送到不同的分片,要把userid随机化 4.添加监听器 5.聚合报告

Wish卖家必读:如何安全有效地进行店铺测评

Wish以其独特的商业模式和先进的技术在电商领域独树一帜。作为北美和欧洲最大的移动电商平台之一,Wish拥有庞大的用户基础,其中90%的卖家来自中国,这不仅显示了其在全球电商市场中的影响力,也反映了其对中国卖家的吸引力。 Wish平…

vxe-table合并行数据;element-plus的el-table动态合并行

文章目录 一、vxe-table合并行数据1.代码 二、使用element-plus的el-table动态合并行2.代码 注意&#xff1a;const fields 是要合并的字段 一、vxe-table合并行数据 1.代码 <vxe-tableborderresizableheight"500":scroll-y"{enabled: false}":span-m…

Ubuntu 22.04远程自动登录桌面环境

如果需要远程自动登录桌面环境&#xff0c;首先需要将Ubuntu的自动登录打开&#xff0c;在【settings】-【user】下面 然后要设置【Sharing】进行桌面共享&#xff0c;Ubuntu有自带的桌面共享功能&#xff0c;不需要另外去安装xrdp或者vnc之类的工具了 点开【Remote Desktop】…

window系统openssl开发环境搭建(VS2017)

window系统openssl开发环境搭建 VS2017 一、下载openssl二、安装openssl三、openssl项目配置3.1 配置include文件3.2 配置openssl动态库四、编写openssl测试代码五、问题总结5.1 问题 一5.2 问题二一、下载openssl https://slproweb.com/products/Win32OpenSSL.html 根据自己…

CTF实战:从入门到提升

CTF实战&#xff1a;从入门到提升 &#x1f680;前言 没有网络安全就没有国家安全&#xff0c;网络安全不仅关系到国家整体信息安全&#xff0c;也关系到民生安全。近年来&#xff0c;随着全国各行各业信息化的发展&#xff0c;网络与信息安全得到了进一步重视&#xff0c;越…

【总线】AXI4第八课时:介绍AXI的 “原子访问“ :独占访问(Exclusive Access)和锁定访问(Locked Access)

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣&#xff0c;那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者&#xff0c;AXI4以其高性能和高度可扩展性&#xff0c;成为了现代电子系统中不可或缺的通信桥梁…

力扣习题--找不同

目录 前言 题目和解析 1、找不同 2、 思路和解析 总结 前言 本系列的所有习题均来自于力扣网站LeetBook - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台 题目和解析 1、找不同 给定两个字符串 s 和 t &#xff0c;它们只包含小写字母。 字符串 t…

Web 基础与 HTTP 协议

Web 基础与 HTTP 协议 一、Web 基础1.1域名和 DNS域名的概念Hosts 文件DNS&#xff08;Domain Name System 域名系统&#xff09;域名注册 1.2网页与 HTML网页概述HTML 概述网站和主页Web1.0 与 Web2.0 1.3静态网页与动态网页静态网页动态网页 二、HTTP 协议1.1HTTP 协议概述1.…

跨界客户服务:拓展服务边界,创造更多价值

在当今这个日新月异的商业时代&#xff0c;跨界合作已不再是新鲜词汇&#xff0c;它如同一股强劲的东风&#xff0c;吹散了行业间的壁垒&#xff0c;为企业服务创新开辟了前所未有的广阔天地。特别是在客户服务领域&#xff0c;跨界合作正以前所未有的深度和广度&#xff0c;拓…

刷题之多数元素(leetcode)

多数元素 哈希表解法&#xff1a; class Solution { public:/*int majorityElement(vector<int>& nums) {//map记录元素出现的次数&#xff0c;遍历map&#xff0c;求出出现次数最多的元素unordered_map<int,int>map;for(int i0;i<nums.size();i){map[nu…

llama2阅读: logits是什么?

Logits是一个在深度学习中&#xff0c;几乎一直都有的概念&#xff0c;它意味着模型unnormalized final scores. 然后你可以通过softmax得到模型针对你class的概率分布。 而在llama2的代码中&#xff0c;同样有logits的使用&#xff0c;那么针对llama2&#xff0c;logits的作用…

英国“王曼爱华”指的是哪几所高校?中英双语介绍

中文版 英国“王曼爱华”指的是伦敦大学国王学院、曼彻斯特大学、爱丁堡大学和华威大学这四所院校。以下是对伦敦大学国王学院、曼彻斯特大学、爱丁堡大学和华威大学这四所英国顶尖大学的详细介绍&#xff0c;包括它们的建校历史、专业优势、优秀校友和地理位置。 伦敦大学国…

HTTP协议格式

目录 正文&#xff1a; 1.概述 2.主要特点 3.请求协议格式 4.响应协议格式 5.响应状态码 总结&#xff1a; 正文&#xff1a; 1.概述 HTTP 协议是用于传输超文本数据&#xff08;如 HTML&#xff09;的应用层协议&#xff0c;它建立在传输层协议 TCP/IP 之上。当我们在…

C语言之常用内存函数以及模拟实现

目录 前言 一、memcpy的使用和模拟实现 二、memmove的使用和模拟实现 三、memset的使用和模拟实现 四、memcmp的使用和模拟实现 总结 前言 本文主要讲述C语言中常用的内存函数&#xff1a;memcpy、memmove、memset、memcmp。内容不多&#xff0c;除了了解如何使用&#x…

remix测试文件测试智能合约

remix内其实也是可以通过编写测试文件来测试智能合约的&#xff0c;需要使用插件自动生成框架以及测试结果。本文介绍一个简单的HelloWorld合约来讲解 安装插件多重检测&#xff1a; &#xff08;solidity unit testing&#xff09; 编译部署HelloWorld合约 // SPDX-License-…