Python学习—— 类与对象

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

1 基本概念

1.1 面向对象

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

1.2 类

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

1.3 对象

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

2 基本使用

2.1 类的定义

# 类的定义
class Car:
    pass

2.2 对象的创建

# 创建 Car 的实例对象 c
class Car:
    pass
	
c = 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
    @classmethod
    def 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
    @staticmethod
    def 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 = name
    def 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 = name
    def 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 = name
    def 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.mfbz.cn/a/634436.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据分析面试】51. 读取大型csv文件

题目 假设你是一家科技公司的数据分析师。近期由于管理层变动,新的总经理上任,他想要了解公司过往的交易情况数据,并且这个任务由数据分析团队负责完成。历史交易数据下载导出完成后,团队发现Csv文件大小超过了5个G,使…

解决Wordpress中Cravatar头像无法访问问题

一、什么是Cravatar Gravatar是WordPress母公司Automattic推出的一个公共头像服务,也是WordPress默认的头像服务。但因为长城防火墙的存在,Gravatar在中国时不时就会被墙一下,比如本次从2021年2月一直到8月都是不可访问状态。 在以往的时候&…

OVS名词解释(随手记)

qbr:Linux网桥,为虚拟机提供安全组服务,负责安全隔离,有关安全组的实现。 veth-pair:一对虚拟端口设备 br-int:OVS的核心网桥之一。二三层流量均需经过该网桥,通过local vlan tag实现主机内部不…

Greco:使用ZKP来证明FHE参与方的RLWE密文格式正确

1. 引言 以太坊基金会Enrico Bottazzi 2024年论文Greco: Fast Zero-Knowledge Proofs for Valid FHE RLWE Ciphertexts Formation,开源代码见: https://github.com/privacy-scaling-explorations/greco(Rust & Python)【基于…

2024最新彩虹聚合DNS管理系统源码v1.3 全开源

简介: 2024最新彩虹聚合DNS管理系统源码v1.3 全开源 聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析,目前已支持的域名平台有:阿里云、腾讯云、华为云、西部数码、DNSLA、CloudFlare。 本系统支持多用户,每个用户可…

数据库|SQLServer数据库管理系统基本使用

哈喽,你好啊,我是雷工! 此处学习是以SQL Server为例。 学习数据服务打开、服务器名称的集中写法、TCP/IP协议的打开和登录模式修改的四个步骤,以下为学习笔记。 数据库管理系统包括:客户端服务端(运行在服务器上面的一…

Python编程-后端开发之Django5应用请求处理与模板基础

Python编程-后端开发之Django5应用请求处理与模板基础 最近写项目,刚好用到了Django,现在差不多闲下来,个人觉得单体项目来讲django确实舒服,故写此总结 模板语法了解即可,用到了再看,毕竟分离已经是主流操…

深度学习之基于Yolov3的行人重识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 行人重识别(Person Re-Identification,简称ReID)是计算机视觉领域…

AI大模型日报#0523:中国大模型价格战的真相、大模型「上车」、王小川首款 AI 应用

导读:AI大模型日报,爬虫LLM自动生成,一文览尽每日AI大模型要点资讯!目前采用“文心一言”(ERNIE 4.0)、“零一万物”(Yi-Large)生成了今日要点以及每条资讯的摘要。欢迎阅读&#xf…

Vitis HLS 学习笔记--控制驱动TLP - Dataflow视图

目录 1. 简介 2. 功能特性 2.1 Dataflow Viewer 的功能 2.2 Dataflow 和 Pipeline 的区别 3. 具体演示 4. 总结 1. 简介 Dataflow视图,即数据流查看器。 DATAFLOW优化属于一种动态优化过程,其完整性依赖于与RTL协同仿真的完成。因此,…

指针,指针变量,引用,取地址符,malloce()函数使用,C中“—>” 和“ . ” 作用与区别

目录 一:指针,指针变量,引用,取地址符: 前提 : 1.“ * ” 的两种用途 2." & “的两种用途 2.1:引用 2.2:取地址 补充: 二 : malloc(),动态申请地址空间 1.原型定义…

提权方式及原理汇总

一、Linux提权 1、SUID提权 SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。 为可执行文件添加suid权限的目的是简…

安卓CardView使用

目录 前言一、基础使用1.1 依赖导入1.2 CardView的常用属性1.3 CardView继承关系 二、关于Z轴的概念三、CardView效果3.1 圆角 CardView3.2 阴影 CardView3.3 设置卡片背景3.4 设置卡片背景(内部颜色)3.5 同时设置背景颜色 前言 CardView是Android支持库…

C#Csharp,SharpPcap网络抓包程序及源码(适合网络分析直接使用或源码二次开发)

目录 1.程序简介2.程序截图3.程序源码 1.程序简介 C#Csharp,SharpPcap网络抓包程序及源码(适合网络分析直接使用或源码二次开发) 2.程序截图 3.程序源码 https://download.csdn.net/download/xzzteach/89325817

BOM..

区别:

html5 笔记01

01 表单类型和属性 input的type属性 单行文本框: typetext 电子邮箱 : typeemail 地址路径 : type url 定义用于输入数字的字段: typenumber 手机号码: typetel 搜索框 : typesearch 定义颜色选择器 : typecolor 滑块控件 : typerange 定义日期 :typedate 定义输入时间的控件…

【OceanBase诊断调优】—— 直连普通租户时遇到报错:Tenant not in this server

本文介绍了直连 OceanBase 数据库中的普通租户时,出现报错:ERROR 5150 (HY000) : Tenant not in this server 的处理方法。 问题描述 在 n-n 或者 n-n-n (n>1) 的部署架构中,使用 2881 端口 直连 OceanBase 集群的普通租户,可…

首都师范大学聘请旅美经济学家向凌云为客座教授

2024年4月17日,首都师范大学客座教授聘任仪式在首都师范大学资源环境与旅游学院举行。首都师范大学资源环境与旅游学院院长吕拉昌主持了仪式,并为旅美经济学家向凌云教授颁发了聘书。 吕拉昌院长指出,要贯彻教育部产学研一体化战略&#xff0…

给树莓派配置静态IP地址

第一步:查找默认网关 打开windowr;输入cmd, 输入 最后一行就是默认网关 ipconfig第二步:确定分配好给树莓派的IP地址 要注意:(1)静态ip地址与路由器网段保持一致(2)与…

知乎广告推广开户最低需要多少钱?

精准高效的广告推广,是企业成功的关键,知乎作为知识分享与交流的高端平台,汇聚了大量高质量用户群体,无疑是品牌传播与产品推广的黄金之地。云衔科技作为您数字营销旅程中的得力伙伴,正以专业的知乎广告开户及代运营服…