Python学习—— 类与对象

在刚接触编程时,我们就了解到编程界有两大思想:面向过程与面向对象,Python 就是一门面向对象的语言,如果你了解过面向对象的思想,自然就知道面向对象思想包含两个基本概念:类与对象 ,下面我们就一起详细学习下 Python 的类与对象吧!

1 基本概念

1.1 面向对象

面向对象是一种抽象,是一种用分类的方式看待问题的方法,用 Java 的编程思想来说就是:万物皆对象;面向对象有三大特性:封装、继承、多态。

1.2 类

上面说了面向对象是一种用分类的方式看待问题的方法,一个分类就是一个类,可以把类看作是一个抽象的模板,如:Car 类。

1.3 对象

对象是根据类创建出来的一个个实例。

2 基本使用

2.1 类的定义

# 类的定义
class Car:pass

2.2 对象的创建

# 创建 Car 的实例对象 c
class Car:passc = Car()

2.3 类中定义属性​​​​​​​

# 定义 Car 类的属性 name
class Car:name = 'BMW'

3 类中的方法

3.1 内置方法

Python 创建任何一个类的时候,都会包含一些内置的方法,主要包括如下:

方法说明
__init__构造函数,在生成对象时调用
__del__析构函数,释放对象时使用
__repr__打印,转换
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用
__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
__pow__乘方
3.2 自定义方法

Python 有三种常见的方法,分别为:实例方法、类方法、静态方法,这三种方法都定义在类中。

3.2.1 类方法

类方法是将类本身作为对象进行操作的方法。

定义与使用​​​​​​​

'''
类方法(可调类变量、可被实例调用、可被类调用)
1、类方法通过@classmethod装饰器实现,只能访问类变量,不能访问实例变量;
2、通过cls参数传递当前类对象,不需要实例化。
'''
class Car(object):name = 'BMW'def __init__(self, name):self.name = name@classmethoddef run(cls,speed):print(cls.name,speed,'行驶')
# 访问方式1
c = Car("宝马")
c.run("100迈")
# 访问方式2
Car.run("100迈")
3.2.2 静态方法

静态方法是类中的函数,不需要实例。

定义与使用​​​​​​​

'''
静态方法(可调类变量、可被实例调用、可被类调用)
1、用 @staticmethod 装饰的不带 self 参数的方法;
2、静态方法名义上归类管理,实际中在静态方法中无法访问类和实例中的任何属性;
3、调用时并不需要传递类或实例。
'''
class Car(object):name = 'BMW'def __init__(self, name):self.name = name@staticmethoddef run(speed):print(Car.name,speed,'行驶')# 访问方式1
c = Car("宝马")
c.run("100迈")
# 访问方式2
Car.run("100迈")
3.2.3 实例方法

实例方法就是类的实例能够使用的方法。

定义与使用​​​​​​​

# 实例方法(可调类变量、可调实例变量、可被实例调用)
# 第一个参数强制为实例对象 self。
class Car(object):name = 'BMW'def __init__(self, name):self.name = namedef run(self,speed):print(self.name,speed,'行驶')# 访问
c = Car("宝马")
c.run("100迈")

4 类的继承

定义与使用​​​​​​​

# 基本语法:class ClassName(BaseClassName)
# 父类
class Car(object):name = 'BMW'def __init__(self, name):self.name = namedef run(self,speed):print(self.name,speed,'行驶')# 子类
class BMWCar(Car):conf = "经济适用型"pass# 调用父类 Car 中 run 方法
bc = BMWCar("BMW经济适用型轿车")
bc.run("100迈")

5 类的多态

定义与使用​​​​​​​

# 父类
class Car(object):name = 'BMW'def __init__(self, name):self.name = namedef run(self,speed):print('Car-->',self.name,speed,'行驶')# 子类1
class BMWCar(Car):def run(self,speed):print('BMWCar-->',self.name,speed,'行驶')# 子类2
class SVWCar(Car):def run(self,speed):print('SVWCar-->',self.name,speed,'行驶')# 调用 run 方法
c = Car("Car")
c.run("120迈")bc = BMWCar("宝马")
bc.run("100迈")sc = SVWCar("大众")
sc.run("80迈")# 输出结果
'''
Car--> Car 120迈 行驶
BMWCar--> 宝马 100迈 行驶
SVWCar--> 大众 80迈 行驶
'''

在上面的例子中,我们可以看出:c、bc 、sc 是不同类型的对象,在它们调用 run 方法时,调用的均是各自类中的方法,这就是多态。

总结

本节给大家介绍了 Python 类与对象的定义和使用,对 Python 工程师提供了支撑,能够根据实际情况在项目中灵活使用不同类型的方法。

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

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

相关文章

10个顶级的论文降重指令,让你的论文降重至1.9%

10个顶级的论文降重指令,本硕博写论文必备! 在ChatGPT4o对话框中输入:写一个Spring BootVue实现的车位管理系统的论文大纲,并对其具体章节进行详细描述。 几小时即可完成一份1万字论文的编写 在GPTS中搜索论文降重,使…

Milvus 使用过程中的常见问题集锦

引言 在使用Milvus的过程中,可能会遇到一些常见问题。这些问题可能涉及到配置、查询、数据同步等方面。 常见问题 以下是一些可能遇到的常见问题及其解决方法: 查询结果不正确: 可能原因:Milvus内部缓存与数据不一致&#xff0…

RPA(机器人流程自动化)技术解读

什么是RPA RPA(Robotic Process Automation),译为流程自动化机器人,又可以称为数字化劳动力(Digital Labor),是一种智能化软件,通过模拟并增强人类与计算机的交互过程,实…

2024 电工杯高校数学建模竞赛(B题)数学建模完整思路+完整代码全解全析

你是否在寻找数学建模比赛的突破点?数学建模进阶思路! 作为经验丰富的数学建模团队,我们将为你带来2024电工杯数学建模竞赛(B题)的全面解析。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解…

Aware接口作用

介绍 Aware(感知)接口是一个标记,里面没有任何方法,实际方法定义都是子接口确定(相当于定义了一套规则,并建议子接口中应该只有一个无返回值的方法)。 我们知道spring已经定义好了很多对象,如…

2024 电工杯高校数学建模竞赛(A题)| 储能配置 |建模秘籍文章代码思路大全

铛铛!小秘籍来咯! 小秘籍团队独辟蹊径,运用负载均衡,多目标规划等强大工具,构建了这一题的详细解答哦! 为大家量身打造创新解决方案。小秘籍团队,始终引领着建模问题求解的风潮。 抓紧小秘籍&am…

C 语言设计模式(结构型)

文章目录 代理模式场景示例 门面模式场景示例 桥接模式场景示例 适配器模式场景示例 外观模式场景示例 享元模式场景示例 装饰器模式场景示例 组合模式场景示例 代理模式 C语言中,代理模式通常用于实现对象的间接访问。代理模式是一种结构型设计模式,它…

微信小程序uniapp+django洗脚按摩足浴城消费系统springboot

原生wxml开发对Node、预编译器、webpack支持不好,影响开发效率和工程构建。所以都会用uniapp框架开发 前后端分离,后端给接口和API文档,注重前端,接近原生系统 使用Navicat或者其它工具,在mysql中创建对应名称的数据库&#xff0…

Java中字符串拼接方式

在Java编程中,字符串是非常基础且重要的数据类型。无论是处理用户输入、生成日志信息还是构建复杂的文本输出,字符串拼接都是一个不可避免的操作。本文将详细探讨几种常见的字符串拼接方式,并分析它们的优缺点,以帮助开发者选择最…

GO实名认证接口开发示例、接口集成、身份认证

翔云身份证实名认证接口,通过核验身份证二要素、三要素、三要素现场人像的方式,实时联网核验身份信息的真伪。想象一下,无需耗费大量的人力物力,只需简单几步,即可将翔云身份证实名认证接口集成到您的应用中。 无论是…

集成框架 -- 项目启动时创建mysql数据库结构

使用 Spring JDBC DataSource 初始化 前言正文配置Spring JDBC的DataSource初始化application.propertiesapplication.yml 使用 data.sql 进行数据库初始化application.propertiesapplication.ymlapplication.propertiesapplication.yml 前言 项目中要使用一些数据库&#xff…

xjoi题库一级二段题解(c语言版)

开根号 时间:0.2 空间:32M 题目描述: 输入一个整数, 求它的平方根,输出答案向下取整. 比如5√2, 16−−√4 输入格式: 输入一个整数 输出格式: 输出一个整数 样例输入1: 5 样例输出1: 2 样例输…

cn.hutool.poi.excel 实现excel导出效果 首行高度,行样式,颜色,合并单元格,例子样式

需求 接了需求,下载excel模版,本来看着还是简单的,然后实现起来一把泪,首先是使用poi,我查了好久,才实现,然后是我用easyexcel又实现了一遍,用了一个周多才实现。 这是需求&#x…

Python使用virtualenv创建虚拟环境

目录 第一步:安装virtualenv 第二步:选择一个文件夹用来放所创建的虚拟环境 第三步:创建虚拟环境 第四步:激活虚拟环境 第五步:退出虚拟环境 第六步:测试安装django 前提:你得有个python环…

【STL专题】深入探索C++之std::string:不止于字符串【万字详解】

欢迎来到CILMY23的博客 🏆本篇主题为:深入探索C之std::string:不止于字符串 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux &#x1f3…

IOS手机自动化一些工具的简单有哪些?

iOS手机自动化测试或操作可以通过多种工具来实现,这些工具提供了丰富的功能,可以帮助开发者和测试人员提高效率。以下是一些简单的iOS自动化工具: 1. Xcode: 苹果官方提供的开发工具,包含了iOS应用开发、调试和自动化测试的功能。…

aardio - godking.vlistEx虚表点击表头全选、排序

新版虚表内置了名称为 DefaultCheckedImg 和 DefaultUnCheckedImg 的两张图片,分别为 【选择框勾选状态默认图片】 和 【选择框未勾选状态默认图片】 以下代码调用了这两张图片,所以请将虚表库升级为最新版。 如果使用旧版库,可以自行添加这…

【Python自动化测试】:Unittest单元测试与HTMLTestRunner自动生成测试用例的好帮手

读者大大们好呀!!!☀️☀️☀️ 🔥 欢迎来到我的博客 👀期待大大的关注哦❗️❗️❗️ 🚀欢迎收看我的主页文章➡️寻至善的主页 文章目录 🔥前言🚀unittest编写测试用例🚀unittest测…

六种常用设计模式

单例设计模式 单例模式指在整个系统生命周期里,保证一个类只能产生一个实例,确保该类的唯一性。 单例模式分类 单例模式可以分为懒汉式和饿汉式,两者之间的区别在于创建实例的时间不同: 懒汉式:指系统运行中&#…

SpringBootWeb 篇-深入了解 Mybatis 删除、新增、更新、查询的基础操作与 SQL 预编译解决 SQL 注入问题

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Mybatis 的基础操作 2.0 基础操作 - 环境准备 3.0 基础操作 - 删除操作 3.1 SQL 预编译 3.2 SQL 预编译的优势 3.3 参数占位符 4.0 基础操作 - 新增 4.1 主键返回…