Python-基础-面向对象

文章目录

    • 面向对象
      • 1 简介
      • 2 基本操作
        • 2.1 类
        • 2.2 对象
        • 2.3 继承

面向对象

1 简介

面向对象(OOP)是一种对现实世界理解和抽象的方法,对象的含义是指在现实生活中能够看得见摸得着的具体事物,一句比较经典的描述是一切皆对象,Python 是一门面向对象的语言,面向对象编程简单来说就是一种封装代码的方式。

面向对象相关概念

  • 类:描述具有相同属性和方法的集合,简单来说就是一个模板,通它来创建对象。
  • 对象:类的实例。
  • 方法:类中定义的函数。
  • 类变量:定义在类中且在函数之外的变量,在所有实例化对象中公用。
  • 局部变量:方法中定义的变量,只作用于当前实例。

面向对象三大特性

  • 封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,提高复用性和安全性。
  • 继承:一个类继承一个基类便可拥有基类的属性和方法,可提高代码的复用性。
  • 多态:父类定义的引用变量可以指向子类的实例对象,提高了程序的拓展性。

2 基本操作

2.1 类

Python 中类的定义使用 class 关键字,语法如下所示:

class 类名:属性...方法...

比如我们定义一个类 Cat,如下所示:

class Cat:# 属性color = 'black'# 构造方法def __init__(self, name):self.name = name# 自定义方法def eat(self, food):self.food = foodprint(self.name, '正在吃'+food)

构造方法 __init__() 会在类实例化时自动调用。无论构造方法还是其他方法都需要将 self 作为第一个参数,它代表类的实例。

类创建好后,可以直接通过类名访问属性,格式为:类名.属性名,比如我们访问 Cat 类的 color 属性,如下所示:

print('color-->', Cat.color)

上面 Cat 类中定义的属性和方法都是公开的,除此之外我们还可以定义私有属性和方法,声明方式为:在属性名或方法名前加两条下划线,示例如下所示:

class Cat:__cid = '1'def __run(self):pass

需要强调一点是:外部不能访问私有属性和调用私有方法,自然 Cat.__cid 是会报错的。

2.2 对象

创建对象也称类的实例化,比如我们通过 Cat 类创建对象,如下所示:

# 创建对象
c = Cat('Tom')

创建好对象后,我们就可以使用它访问属性和调用方法了,如下所示:

# 访问属性
print('name-->', c.name)
print('color-->', c.color)
# 调用方法
c.eat('鱼')

同样对象 c 不能访问私有属性 __cid 及调用私有方法 __run,那我们会有这样一个疑问,这个私有属性和方法难道定义了却不能用吗?我们来一起看个例子,如下所示:

class Cat:__cid = '1'def __run(self, speed):print('__cid是'+self.__cid+'的猫', '以'+speed+'的速度奔跑')def run(self, speed):self.__run(speed)c.run('50迈')

输出结果:

__cid是1的猫 以50迈的速度奔跑

通过示例我们可以看出,在内部私有属性和方法是可以被访问和调用的。

2.3 继承

Python 支持类的继承,而且支持多继承,语法格式为:

class 基类(子类1, 子类2 ...):...

示例如下所示:

# 波斯猫类
class PersianCat(Cat):def __init__(self, name):self.name = namedef eat(self, food):print(self.name, '正在吃'+food)
#加菲猫类
class GarfieldCat(Cat):def __init__(self, name):self.name = namedef run(self, speed):print(self.name, '正在以'+speed+'的速度奔跑')
# 单继承
class SingleCat(PersianCat):pass
# 多继承
class MultiCat(PersianCat, GarfieldCat):pass#调用
sc = SingleCat('波斯猫1号')
sc.eat('鱼') # 结果:波斯猫1号 正在吃鱼mc = MultiCat('波斯加菲猫1号')
mc.eat('鱼') # 结果:波斯加菲猫1号 正在吃鱼
mc.run('50迈') # 结果:波斯加菲猫1号 正在以50迈的速度奔跑

如果继承的父类方法不能满足我们的需求,这时子类可以重写父类方法,如下所示:

class SingleCat(PersianCat):def eat(self, food ):print(self.name, '正在吃'+food, '十分钟后', self.name+'吃饱了')
sc = SingleCat('波斯猫1号')
sc.eat('鱼') # 结果:波斯猫1号 正在吃鱼 十分钟后 波斯猫1号吃饱了

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

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

相关文章

微服务通信

一、Feign远程调用 Feign是Spring Cloud提供的⼀个声明式的伪Http客户端, 它使得调⽤远程服务就像调⽤本地服务⼀样简单, 只需要创建⼀个接⼝并添加⼀个注解即可。 Nacos很好的兼容了Feign, Feign 默认集了Ribbon, 所以在Nacos下…

vue全局参数

/* eslint-disable no-new */ new Vue({el: #app,router,components: { App },template: <App/>,data:function(){return{wbWinList: [] // 定义的变量&#xff0c;全局参数}}, }) //使用全局参数 // this.$root.backgroundColor 666;其它页面如果想监听改变 //监听全…

git cherry-pick 用法

/* * cherry-pick */ git cherry-pick 允许开发者有选择地合并其他分支的提交到当前分支&#xff0c; 这对于解决代码冲突、修复bug以及在不同分支之间转移提交非常有用。 基本用法&#xff1a; 1.合并一个提交&#xff1a;通过指定提交的哈希值&#xff0c…

polarctf靶场[CRYPTO]显而易见的密码、[CRYPTO]夏多的梦、[CRYPTO]再这么说话我揍你了、[CRYPTO]神秘组织M

[CRYPTO]显而易见的密码 考点&#xff1a;ntlm编码 打开文件&#xff0c;显示内容就是ntlm格式 ntlm解密 在线网站&#xff1a; https://www.cmd5.com/便可得到flag [CRYPTO]夏多的梦 根据题目提示可以猜测为夏多密码 考点&#xff1a;夏多密码 在线加密原理网站&#x…

使用axios的fetch adapter遇到浏览器兼容问题

axios 2024年5月20号发布1.7.0版&#xff0c;开始支持fetch adapter&#xff0c;我是很高兴的&#xff0c;把此前fetch写的语句换成axios的&#xff0c;感觉简洁了很多。 因为我要post传urlencode编码参数&#xff0c;所以用fetch得这样&#xff1a; let data{k1:v1,k2:v2,k3:…

链表OJ题——链表的回文结构

文章目录 一、题目链接二、解题思路三、解题代码 一、题目链接 链表的回文结构 二、解题思路 三、解题代码

探索JetBrains IDE数据库驱动的存储位置及离线安装指南

JetBrains IDE&#xff0c;如IntelliJ IDEA和GoLand&#xff0c;是广受开发者喜爱的集成开发环境。它们提供了强大的数据库支持功能&#xff0c;包括数据库连接和操作。了解数据库驱动的存储位置对于进行离线安装和配置非常重要。 理解数据库驱动 数据库驱动是软件应用程序与…

4种方法!前端判断页面是在PC端还是移动端打开

4种方法&#xff01;前端判断页面是在PC端还是移动端打开 在写前端的过程中&#xff0c;有时候考虑适配与页面权限等问题的时候&#xff0c;需要涉及到用户访问的设备情况&#xff0c;下面将介绍几种常见的判断页面是在PC端还是移动端打开的方法。 方法1. 基于 navigator.use…

【JAVA基础】类与对象

文章目录 Java类Java对象为什么Java会设计对象Java对象怎么用程序的执行流程 Java类 JAVA类&#xff1a;项目中新建的.java文件就是JAVA类&#xff0c;其中包含代码&#xff0c;通过javac命令编译为二进制.class文件&#xff0c;让计算机读取。类是对象的模板 Java对象 JAVA…

【K8s】专题十二(2):Kubernetes 存储之 PersistentVolume

本文内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01; 如果对您有帮助&#xff0c;烦请点赞、关注、转发、订阅专栏&#xff01; 专栏订阅入口 Linux 专栏 | Docker 专栏 | Kubernetes 专栏 往期精彩文章 【Docker】&#xff08;全网首发&#xff09;Kyl…

Python学习-打工人挣钱

编程案例 example one: # 假设小王每天可以挣500元,周内每天花60,周末每天花100,一年365天可以挣多少钱?MoneySum=0 for i in range(365):if i % 7 in [6,0]:MoneySum

笔试题(6)

1 、static 的用法&#xff08;定义和用途&#xff09; 1&#xff09;用 static 修饰局部变量&#xff1a;使其变为静态存 储方式(静态数据区)&#xff0c;那么这个局部变量在函 数执行完成之 后不会被释放&#xff0c;而是继续保留在内存中。 2&#xff09;用 static 修饰全局…

【C++题解】1146. 求S的值

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1146. 求S的值 类型&#xff1a;递归基础、函数 题目描述&#xff1a; 求 S12471116…的值刚好大于等于 5000 时 S 的值。 输入&#xff1a; 无。 输出&#xff1a; 一行&…

自然语言处理系列三十四》 语义相似度》同义词词林》代码实战

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列三十四HanLP自然语言处理工具包代码实战同义词…

原生js中的防抖节流笔记

防抖,单位时间内&#xff0c;频繁触发&#xff0c;只执行最后一次 效果演示 优化前&#xff0c;不断触发&#xff0c;浪费性能 优化后&#xff0c;只在指定时间内触发 演示代码 import debounce from "/node_modules/lodash-es/debounce.js"; const oBox docu…

宿舍管理系统设计与分析

第一章 管理信息系统概述 在人类进入21世纪之际&#xff0c;随着社会的组织化程度以及企业生产的社会化程度越来越高&#xff0c;信息作为一种资源已经和材料、能源并称为现代社会化发展的三大支柱之一。管理信息系统是融科学、信息科学、系统工程以及现代通讯技术、计算机技术…

大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

ollama+llama3.1 405B 简介

ollamallama3.1 简介 Llama 3.1是一款来自Meta的最新型号&#xff0c;提供8B、70 B和405 B模型。 llama3.1:latestllama3.1:8bllama3.1:70bllama3.1:405bllama3.1:8b-instruct-fp16llama3.1:8b-instruct-q2_Kllama3.1:8b-instruct-q3_K_Sllama3.1:8b-instruct-q3_K_Mllama3.1…

WSL-ubuntu下载安装配置cudnn

下载 安装cuDnn的话需要和CUDA版本对应&#xff0c;可参考官网&#xff1a; cuDNN Archive | NVIDIA Developer 我的cuda是11.8 这个cuDNN8.9.7_Linux直接下载&#xff1a; https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.7/local_installers/11.x/cudn…

简约好看音乐播放器网页网站MP4播放器源码

源码介绍 简约好看音乐播放器网页网站MP4播放器源码&#xff0c;music是存放音乐的文件夹&#xff0c;添加音乐也是非常简单&#xff0c;参考上图自己研究去吧&#xff0c;不多说了。 效果截图 源码下载 简约好看音乐播放器网页网站MP4播放器源码